Java JPA OneToMany - "Many"关系不刷新

标签 java database jpa

我在使用 JPA 的 Toplink 实现时遇到了一个奇怪的问题。我正在编写一个独立的应用程序来管理贷款。

我定义了一个 LOAN 类,它与一个 NOTICE 类具有 OneToMany(双向)关系。我创建了一个 GUI 来显示特定贷款的所有通知。在我的程序的另一部分,我可以发送延迟通知,并将其保存为通知。但是,当我尝试显示所有贷款通知时,延迟通知没有出现。我检查了数据库并保存了一个条目,但由于某种原因,通知没有被取消。

只有当我重新启动我的应用程序时,通知才会出现。

因为我已经定义了 OneToMany 关系,所以我自己不会对数据库进行“直接”查询 - 我让 JPA 为我处理检索所有通知。

作为解决方法,我创建了一个查询来简单地获取特定贷款的所有通知。这行得通。但是,我认为通过定义两个类之间的 OneToMany 关系,这应该为我处理。好像有些东西没有正确刷新...好像正在使用“旧”通知列表而不是从数据库中刷新?

最佳答案

您如何“发送延迟通知”?需要有类似于以下的语句:

MyLoanInstance.listOfNotices.add(MyNoticeInstance);

即使你已经拥有了

MyNoticeInstance.setLoan(MyLoanInstance);

声明

如果没有该调用,您将不得不完全重新加载您正在使用的实例,或者重新启动您的应用程序。

当您修改 1 端时,Eclipselink 不会自动更新(直到重新加载所有内容)1:M 关系的 M 端的集合,如果您修改 1:M 关系的 1 端,它也不会更新引用修改M端的集合。

作为旁注,您应该考虑查看 EclipseLink,它是从 TopLink 演变而来的,您应该能够直接将 EclipseLink .jar 与 TopLink .jar 交换,即使只是为了收到一些折旧警告。

Eclipse Link

关于Java JPA OneToMany - "Many"关系不刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466054/

相关文章:

mysql - Spring JPA 多对多关系加载缓慢

java - 使用 ShareActionProvider 的共享按钮没有响应

mysql - 从大数据库中获取不起作用

android - 如何为Android创建数据库应用程序?

hibernate - 如何在每次选择之前阻止 JPA 实体管理器刷新

java - 表单和实体类的用法

java - 在运行时动态更新规则。流口水 + Spring Boot

java - 字符串 - Java 中的栈和堆

java - 为 Android 应用程序编译 Java

java - 是否存在简单的基于文档的数据库?