java – JPA中的Null Version字段?
发布时间:2020-12-15 04:09:30 所属栏目:Java 来源:网络整理
导读:http://docs.oracle.com/javaee/6/api/javax/persistence/Version.html中没有任何内容表明它不能为空. 跑完之后 import javax.validation.Validation;import javax.validation.Validator;import org.junit.Test;import static org.junit.Assert.assertFalse;
http://docs.oracle.com/javaee/6/api/javax/persistence/Version.html中没有任何内容表明它不能为空.
跑完之后 import javax.validation.Validation; import javax.validation.Validator; import org.junit.Test; import static org.junit.Assert.assertFalse; public class Test { @Test public void test() { //Using Hibernate Validator 4.1.0.Final... Validator validator = Validation.buildDefaultValidatorFactory().getValidator(); assertFalse(validator.validate(new Foo()).isEmpty()); //why does this fail?? } } 其中Foo.class很简单 import javax.persistence.Entity; import javax.persistence.Version; @Entity public class Foo { @Version private final Integer version = null; } 测试失败,并且未报告@Version验证错误. 这是否意味着@ Version-annotated字段可以为null? 解决方法
@Version只定义一个特定的字段用于乐观锁定.它不会影响DB本身的列,也不会影响验证.因此,如果要强制不使用空值,则必须使用其他注释.
如果将版本字段保留为null,则在尝试执行更新时会出现异常. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |