2010-06-10 4 views
2

최대 절전 모드 엔터티의 멤버로 정적 컬렉션을 가질 수 있습니까?정적 컬렉션을 멤버로 갖는 Hibernate (JPA) 엔터티

public class Question { 
    private String category; 

    ... 
} 

는이 데이터베이스에있는 모든 종류의 서로 다른 세트가 정적 설정 < 문자열 >을 채울 수 있을까 :

내가 객체의 질문을 말해봐? 나는 이것을 질의 할 수 있다는 것을 알았지 만, 다른 사람들이 보았을 수도있는 것처럼 보이기 때문에보다 우아한 해결책이 있는지 궁금해하고있었습니다.

답변

2

제 생각에 JPA는 static 또는 final 필드를 유지할 수 없습니다. 이 사양은 이것에 대해서는 명확하지 않지만 OneToXXX 관계에있는 것이 무엇인지 알지 못하기 때문에 IMO가 이해할 수 있습니다 (JPA가 어떻게로드해야하는지). ejb3 전문가 그룹에서 the following thread에 대한 의견 (예 : 최종 답변이 아님)을 확인하고 싶을 수 있습니다. Question 번을 모두 Category과 연결하는 방법에 대해 걱정할 것입니다.

하지만 아마도 "만족스러운"답변을 얻을 수 있습니다. 어디 보자.

+0

나는 구별되는 SELECT에서 가져온 읽기 전용 컬렉션의 라인을 따라 의미 질문. – partkyle

+0

@ 카일 그래, 나는 그 생각을 이해하지만 JPA에게 좋은 방법으로 그렇게하는 방법을 모른다. 나는 당신이 더 나은 대답을 얻는지를보기 위해 매우 궁금합니다. –

2

단순하지만 완벽한 솔루션은 Category 또는 Question 엔티티 (또는 둘 다)에 개체 @PostLoad 콜백 메소드를 사용하는 것입니다하지 :

@Entity 
public class Question { 
    public static Set<String> categories = new HashSet<String>(); 
    ... 

    @PostLoad 
    public void fillInCategories() { 
    categories.add(category); 
    } 

} 

categories 게으른로드입니다 - 모든 범주를 포함하는 모든 질문이로드 될 때까지 그것은 '수상 완료 되십시오.

0

속성 액세스를 사용하십시오.

기본적으로

는 ObjectDB 직접 필드에 액세스하지만, GET을 사용하여 속성과 설정 방법으로 간접적으로 필드를 액세스하는도 지원됩니다

@Access(AccessType.PROPERTY) 
관련 문제