加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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,则在尝试执行更新时会出现异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读