我使用JPA 2.0和OpenJPA作为底层实现.我有一个映射到自身的实体来表示实体之间的父子层次结构.一个实体最多可以有一个以上的子女,但只有一个父母.因此,没有父级的实体位于层次结构的顶层.我的目标是从数据表中获取所有层次结构.所以我的查询为:
SELECT e FROM MyEntity e where e.parent is null
在MyEntity中,我完成了映射:
@ManyToOne
@JoinColumn(name="PARENT")
private MyEntity parent;
@OneToMany(mappedBy="parent", fetch=FetchType.EAGER)
private List children;
当程序运行时,层次结构顶部的实体将填充其所有子项,但子实体不会获取其子项.我认为EAGER提取将填充整个实体图.但事实并非如此.在JPA 2.1中有EntityGraph ASAIK的功能.但是如何在JPA 2.0中实现呢?