我有一个很大的数据库,到处都是双向关系。问题是,当我传递一个典型的jpa查询(如findById或其他查询)时,我会恢复具有无限深度的对象(简而言之,我恢复了整个数据库)。因此,我的问题是:是否有办法限制检索到的对象的深度?下面的hibernate属性有用吗?
hibernate.max_fetch_depth为单端关联(一对一、多对一)的外部连接获取树设置了最大“深度”。0禁用默认的外部连接取取。例如建议值在0到3之间
有人能用例子向我解释一下这个属性吗。
提前感谢
发布于 2022-05-21 15:59:17
Hibernate允许您在实体类中EAGER取取的情况下决定取取的深度。
考虑一个例子:
public class ClassA implements Serializable{
@JoinColumn(name="class_b", referenceColumnName="id")
@ManyToOne
private ClassB classB;
}
public class ClassB implements Serializable{
@JoinColumn(name="class_c", referenceColumnName="id")
@ManyToOne
private ClassC classC;
}
public class ClassC implements Serializable{
@JoinColumn(name="class_d", referenceColumnName="id")
@ManyToOne
private ClassD classD;
}
public class ClassD implements Serializable{
//codes
}如果您获取ClassA,并且您的hibernate.max_fetch_depth被设置为2,那么它将只获取ClassB,然后classB将获取ClassC,并终止抓取过程。
您可以查看此文档以获得更多信息。
https://stackoverflow.com/questions/72189312
复制相似问题