-2
我有几个类别。每个类别可以存储一个子类别。例如:树结构和Java持久性2.0
1)乐器
一个)吉他
电吉他
声学吉他
b)中钢琴
2)办公用品
统治者
铅笔
我想查看树形式的上述数据,我想控制的项目位置。我使用JPA 2.0,我不知道如何以最佳方式坚持数据。我可以用自己的方式解决问题,但我不想重新发明轮子。所以,我正在寻找更好的解决方案 - 一个图书馆等。我应该使用什么?
我有几个类别。每个类别可以存储一个子类别。例如:树结构和Java持久性2.0
1)乐器
一个)吉他
电吉他
声学吉他
b)中钢琴
2)办公用品
统治者
铅笔
我想查看树形式的上述数据,我想控制的项目位置。我使用JPA 2.0,我不知道如何以最佳方式坚持数据。我可以用自己的方式解决问题,但我不想重新发明轮子。所以,我正在寻找更好的解决方案 - 一个图书馆等。我应该使用什么?
这是一个经典问题。
解决方案很大程度上取决于你想要用你的树做什么。
正常的解决方案是直接表示父子关系。您的类看起来有点像:
@Entity
public class Category {
@ManyToOne
private Category parent;
@OneToMany(mappedBy="parent")
private Set<Category> children;
}
而且你必须在保持了parent
值表中的单个列。
这种方法很容易理解和实现,并且使得在树上的导航非常容易。然而,回答诸如“家居饰品”下的所有类别都是什么类型的问题是相当昂贵的?“或“是'lilos'的'花园用品'的任何深度的子类别?”。
如果你不介意做一些本地SQL,并且你的数据库支持递归公用表表达式,那么你可以很容易地做这些查询。
如果不是,请查阅nested sets。