我是Play Framework,Java和Hibernate JPA的新手,所以感谢任何帮助(来自PHP)。
我的目标是拥有一个类别树。它本质上是一个无限的父/子关系。
每个类别关系都需要附加一些特定于关系的注释,而不是形成关系的各个类别。
所以数据库中的Join / Relationship表如下所示:
| id | cat1id | cat2id | data1 | data2 | order |
| 1 | 1 | 3 | stuff | more | 1 |
| 2 | 1 | 4 | fish | fun | 2 |
| 3 | 3 | 2 | ants | whoa | 1 |
我尝试在Category类中执行@ManyToMany并且无法弄清楚如何获取额外的字段
我现在创建了一个Category类,它包含所有类别的东西,并且有一个包含上述数据的CategoryTree类。 CaaegoryTree cat1id是@ManyToOne到Category和CategoryTree cat2id是@ManyToOne到Category和OneToMany都来自Category。这一切在大多数情况下都很好但只是感觉不对。
另外,我想在Category类中有一个名为ParentCats和ChildCats的属性,它们分别是这个Category对象是其父类和子类的List或类集。我可以通过一个函数实现所有这一切,但就像更正常的实体关系一样,这种信息很容易以这种方式检索。
对正确方向的任何想法,指导或捅都表示赞赏!
答案 0 :(得分:2)
对于第一部分,在OO意义上你真正想要的是一个关联类。不幸的是,JPA不支持这些。请查看此链接:ManyToMany with additional columns这或多或少是您已有的。
对于问题的第二部分,只需使用自引用,双向关联:
public class Category extends Model {
@ManyToMany(mappedBy="parentCats")
public Set<Category> subCats;
@ManyToMany
public Set<Category> parentCats;
}