2013-04-24 1 views
3

아무 것도 표시되지 않습니다. http://docs.oracle.com/javaee/6/api/javax/persistence/Version.html 일 수 없습니다.JPA의 Null 버전 필드?

foo.class 위 단순히

import javax.persistence.Entity; 
import javax.persistence.Version; 

@Entity 
public class Foo 
{ 
    @Version 
    private final Integer version = null; 
} 

테스트가 실패하고 더 @Version 유효성 검사 오류가보고되지 않은 경우

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?? 
    } 
} 

를 실행 한 후.

@ Version-annotated fields는 null이 될 수 있습니까?

답변

7

@Version은 특정 필드가 낙관적 잠금에 사용되는 것을 정의합니다. DB 자체의 열이나 유효성 검사에는 영향을주지 않습니다. 따라서 null 값을 적용하지 않으려면 다른 주석을 사용해야합니다.

버전 필드를 null로 남겨두면 업데이트를 수행하는 동안 예외가 발생합니다.