java - 如何检查一个对象是否连接到 hibernate 中的另一个对象

标签 java hibernate

假设有两个域对象类,ABAB 具有双向一对多关系。 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/

相关文章:

java - Mac Mavericks Java 无法找到可执行文件 bash_profile 编辑不起作用

java - 在 Solaris 操作系统中使用 Java 和第 3 方库在打印机中打印 PDF

java - 消息驱动 Bean 业务逻辑是否应该委托(delegate)给 EJB session Bean

java - Spring data Rest在访问带有数据的表时返回http 500

java - 如何使用 Hibernate4 和 Spring 创建 SessionFactory?

Java日期到postgres时间戳,不带时区

java - Eclipse - 无需鼠标即可通过超链接转到类/界面

java - 使用 CheckStyle 阻止对内部接口(interface)/类的公共(public)访问

spring-boot - 升级到 Spring Boot 2.7 时测试失败 - "CommandAcceptanceException: Error executing DDL"

java - 让一个简单的 envers 示例工作起来很困难 : problem #34