0
我正在使用JPA实体图来加速关系。jpa/hibernate在自动重新加载中急切地加载整个链
不过,我的问题是:
的关系是这样的一个自动的关系:
public class X{
...
@OneToOne
@JoinColumn(name = "foreign_key")
protected @Getter @Setter X parent;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "parent", cascade = {CascadeType.PERSIST, CascadeType.MERGE})
private @Getter @Setter Set<X> children;
}
所以,当我从数据库中获取的对象X,孩子来装入太多。这是对的。但是,当我得到儿童的第一个对象设置并获得他们的孩子时,休眠确实在数据库中执行另一个查询。
我的实体类anotated本:
@NamedEntityGraph(
name = "cobranca-com-lancamentos-com-filhos",
attributeNodes = {
@NamedAttributeNode(value = "children")
}
)
,我的搜索是这样的:
em.createQuery("FROM X WHERE id = " + id).setHint("javax.persistence.fetchgraph", em.getEntityGraph("cobranca-com-lancamentos-com-filhos")).getSingleResult();
任何想法?
我想加载只是在特定的查询。因此,我使用JPA命名实体图。当我使用X对象的子集时,hibernate不需要咨询数据库,就像我说的,这是可行的,我想要这个。但是当我得到一个孩子的元素设置和迭代他们的孩子设置,休眠咨询数据库,这是我不想要的,明白吗? –