내 JPA 2.0 문서 (및 온라인 설명서)에 따르면 단일 엔터티 또는 엔터티 계층 내에서 필드 및 속성 액세스를 혼합 할 수 있어야합니다. 클래스의 @Access의 주석은 기본 액세스를 지정합니다. 필드 또는 속성에 배치 할 때 getter @Access는이 필드에 대해 기본값을 재정의해야한다고 지정할 수 있습니다.@Access와 관련하여 JPA를 준수하지 않는 최대 절전 모드입니까?
@Entity
@Access(AccessType.FIELD)
Class Foo {
@Id
int id;
@Column(name = "myfield")
String myField;
@Column(name = "myProp")
@Access(AccessType.PROPERTY)
public int getMyProp() {
return 3;
}
public void setMyProp (int p) {
// do nothing
}
}
이 클래스의 결과는 3 개의 열이있는 테이블이어야합니다. 그러나 그것은 Hibernate를 가지고 있지 않다 ... "myProp"컬럼은 테이블에서 빠져있다. Hibernate는 엔티티 ID로부터 그것의 필드 vs 속성 큐를 취하여 그것으로 실행하기 때문에 ... @Access와 관련하여 JPA 스펙을 완전히 무시한다. .
누구든지 이것을 확인하거나 어딘가 어리석은 실수를 할 수 있습니까?
최대 절전 모드 3.5.3-FINAL로했습니다. 저는 HHH-5004를 보았습니다. 문제가 아니기 때문에 "@Access"가 Hibernate 커뮤니티에서 전혀 사용되지 않는다고 생각하게되었습니다. 저기있는 버그를 열어야한다고 생각하세요? – HDave
@HDave : 이것은 (필자는 일반적으로 EclipseLink와 같은 다른 구현으로 동작을 두 번 확인한 후) 사양의 관련 부분과 RI와 함께 작동한다는 사실을 언급합니다. 테스트 케이스는 종종 환영받을 수 있으며 상황을 더 빨리 고정시키는 데 도움이됩니다. –