2011-08-30 2 views
1

저는 Play Framework, Java 및 Hibernate JPA를 처음 사용하므로 모든 도움을 주셔서 감사합니다.재생 JPA 최대 절전 모드 자체 참조 양방향 ManyToOne/OneToMany 관계 질문에 참여

제 목표는 카테고리의 트리를 만드는 것입니다. 그것은 본질적으로 무한한 부모/자식 관계입니다.

각 범주 관계에는 관계를 형성하는 개별 범주가 아닌 관계에 관련된 일부 메모가 연결되어 있어야합니다.

그래서 데이터베이스 내 가입/관계 테이블과 같을 것이다 : 나는 Category 클래스에 @ManyToMany을하고 시도

| id | cat1id | cat2id | data1 | data2 | order | 
| 1 | 1  | 3  | stuff | more | 1  | 
| 2 | 1  | 4  | fish | fun | 2  | 
| 3 | 3  | 2  | ants | whoa | 1  | 

여분 필드를

I 활용하는 방법을 알아낼 수 이제 모든 카테고리 항목을 포함하고 위의 데이터가있는 CategoryTree 클래스가있는 Category 클래스를 만들었습니다. CaaegoryTree cat1id는 Category에 @ManyToOne이고 CategoryTree cat2id는 Category에 @ManyToOne이고 Category에 대해 OneToMany입니다. 모든 것이 정상적으로 작동하지만 괜찮은 것은 아닙니다.

또한 카테고리 클래스에있는 ParentCats 및 ChildCats라는 속성을 갖고 싶습니다. 각 클래스는이 Category 개체가 부모 인 하위 집합 인 목록 또는 목록입니다. 이 모든 일을 물론 기능으로 수행 할 수 있지만,이 정보가 이렇게 쉽게 검색되는 일반적인 엔티티 관계가있는 방법과 비슷합니다.

올바른 방향으로 생각, 안내 또는 멍청이가되어 주시면 감사하겠습니다.

답변

2

첫 번째 부분에서는 OO 의미에서 실제로 원하는 것은 연관 클래스입니다. 유감스럽게도 이것들은 JPA에서 지원하지 않습니다. 이 링크 : ManyToMany with additional columns을 확인하십시오. 이것에 대한

public class Category extends Model { 

    @ManyToMany(mappedBy="parentCats") 
    public Set<Category> subCats; 

    @ManyToMany 
    public Set<Category> parentCats; 

} 
+0

감사 : 질문의 두 번째 부분에 대한

, 그냥 자기 참조, 양방향 연결을 사용합니다. 예, 저는 자기 참조, 양방향 연관성을 가지고 있으며 완벽하게 그 일을합니다. 하지만 내가 가지고있는 연관성 클래스의 경우에는 동일한 정보를 다르게 저장하는 두 개의 데이터베이스 테이블로 끝나지 않을까요? 당신의 제안이 사용법인지 아닌지 잘 모르겠습니다. 아니면 그것을하는 첫 번째 방법은 작동하지 않습니다? 아니면 뭔가 빠졌어요. – bladmiral