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 注释的字段可以为空?
最佳答案
@Version 只是定义一个特定的字段用于乐观锁定。它不影响数据库本身中的列,也不影响验证。因此,如果您想强制执行非空值,则必须使用其他注释。
如果您将版本字段保留为空,您将在尝试执行更新时遇到异常。
关于java - JPA 中的空版本字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16183013/