使用 Hibernate 的简单对象层次结构

Simple object hierarchy with Hibernate

Hibernate如何做分层映射?

例如: 类别

id parent_id name
1  0         Root
2  1         Sub-root 1
3  1         Sub-root 2
4  2         Sub-(sub-root 1)

是否可以为这样的 Category 对象进行惰性映射?

我相信你想问的是实体的继承。我建议使用 JPA 继承策略。有 3 个可用。

  1. Single Table: 只使用一个数据库table。列必须可以为空,因此会浪费数据库 space
  2. Joined Strategy:使用多个table可以连接起来进行实体数据的插入和检索。保存数据库 space 但当继承层次变得又宽又深时性能成为问题
  3. Table per concrete class:使用未连接的单独数据库 table。

不同的策略有不同的优缺点。大家可以根据自己的需要选择。

你问的不是很清楚。

然而,您似乎在谈论自引用关系而不是继承,因此您可以如下所示进行映射。默认获取策略应该与任何其他 @OneToMany 即 LAZY.

相同
@Entity
public class Category{

    @Id
    private Long id;

    @ManyToOne
    @JoinColumn(name = "parent_id")
    private Category parent;

    @OneToMany(mappedBy = "parent")
    private Set<Category> subCategories;
}