Tag: lazy

使用JPA和Hibernate加载没有N + 1笛卡尔积的递归对象图

将项目从Ibatis转换为JPA 2.1时,我遇到了一个问题,我必须为一组对象加载一个完整的对象图,而不是出于性能原因而没有按N + 1选择或使用笛卡尔积。 用户查询将产生List ,我需要确保在返回任务时,它们已填充所有属性,包括父 , 子 , 依赖项和属性 。 首先让我解释一下所涉及的两个实体对象。 任务是层次结构的一部分。 它可以有一个父任务,也可以有子。 任务可以依赖于其他任务,由’dependencies’属性表示。 任务可以有许多属性,由properties属性表示。 尽可能简化了示例对象,并删除了样板代码。 @Entity public class Task { @Id private Long id; @ManyToOne(fetch = LAZY) private Task parent; @ManyToOne(fetch = LAZY) private Task root; @OneToMany(mappedBy = “task”) private List properties; @ManyToMany @JoinTable(name = “task_dependency”, inverseJoinColumns = { @JoinColumn(name = “depends_on”)}) private […]