ejb-3_0-fr-spec-persistence.pdf中有一条声明,内容如下:
持久性上下文未与批量更新或删除的结果同步
因此,如果我执行query.executeUpdate,它将从表中删除行。这些相同的行仍然存在于另一个实体一对多集合中。当我重新启动应用程序时,我看到幻像实体现在已从集合中删除。
那么,是否有一种(nice\simple\generic)同步JPA缓存与批量update\delete结果的方法?
顺便提一句。我正在使用EclipseLink,版本:Eclipse Persistence Services-1.1.0.r3634。
谢谢,
菲尔
最佳答案
您必须注意如何在此处使用“缓存”一词,因为它可能表示不同的含义。
突出显示的短语讨论了持久性上下文,可以将其视为“一级缓存”。为了使用数据库中的最新更改来更新它,您可以执行以下任一操作:
然后,可能还存在未绑定(bind)到特定实体管理器的“第二级缓存”。您可以使用其自己的API(在缓存提供程序之间有所不同)刷新(或清除并重新填充它)。
关于java - JPA:如何将持久性上下文与批量更新或删除的结果同步?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1468674/