Java 在实体对象上进行提交后检索子对象
假设我检索的实体对象如下所示:Java 在实体对象上进行提交后检索子对象,java,hibernate,jpa,Java,Hibernate,Jpa,假设我检索的实体对象如下所示: @Entity public class Mother { ... @OneToMany(mappedBy = "mother", targetEntity = Child.class, fetch = FetchType.LAZY) public List<Child> getChildren() { return children; } }
@Entity
public class Mother {
...
@OneToMany(mappedBy = "mother",
targetEntity = Child.class,
fetch = FetchType.LAZY)
public List<Child> getChildren() {
return children;
}
}
@实体
公共阶级母亲{
...
@OneToMany(mappedBy=“母亲”,
targetEntity=Child.class,
fetch=FetchType.LAZY)
公共列表getChildren(){
返回儿童;
}
}
检索上述对象时,我提交事务(并关闭与该对象关联的会话)。在代码的后面,需要检索子级。如果我想保持fetch类型为LAZY,有没有一种方法可以使用母对象,并且仍然能够调用getChildren()来检索子对象?还是我必须咬紧牙关,通过母亲的钥匙询问孩子们
如果我想保持fetch类型为LAZY,有没有一种方法可以使用母对象,并且仍然能够调用getChildren()来检索子对象
如果实体管理器
已关闭,则不会
还是我必须咬紧牙关,通过母亲的钥匙询问孩子们
您可以在使用FETCH JOIN获取母亲时检索孩子:
SELECT m
FROM Mother m LEFT JOIN FETCH m.children
WHERE m.id = :id
其他选择包括:
- 使用“视图中打开实体管理器”模式(如果您使用的是webapp)
- 使用扩展持久性上下文