假设有两个域对象类,A
和 B
。 A
与 B
具有双向一对多关系。 A
与数以千计的B
相关。关系必须是唯一的,不可能重复。
要检查 B
的实例是否已经连接到 A
的给定实例,我们可以执行一个简单的 INNER JOIN
但是这只会确保已经存在的关系。
目前的 transient 关系呢?
class A {
@OneToMany
private List<B> listOfB;
}
如果我们访问 listOfB
并执行 contains()
检查,这将从数据源中延迟获取 B
的所有已连接实例.我只想通过它们的主键来验证它们。
有没有一个简单的解决方案,我可以做一些事情,比如“A
的这个实例是否与 B
的这个实例连接?”无需将所有这些数据加载到内存中并根据集合执行查找?
最佳答案
谢谢大家的回答。额外的懒惰集合对我有用。我使用 LazyCollection
注释配置了 @OneToMany
连接。
@IndexColumn(name = "index", base = 1)
@LazyCollection(LazyCollectionOption.EXTRA)
Hibernate: Extra-lazy collection fetching文章帮助我做到了这一点。使用此选项时,#size()
、#contains()
、#get()
等不会触发集合初始化。
关于java - 如何检查一个对象是否连接到 hibernate 中的另一个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4617954/