当前位置: 首页 > 知识库问答 >
问题:

重新启动后首先加载持久化对象的列表

沈栋
2023-03-14

代码

我正在使用Eclipse Link和Glassfish,但我遇到了一个非常恼人的错误。

  1. 我正在持久化对象
  2. 我正在读取对象列表(包括新对象)
  3. 新对象的“items”不包含任何项

然后重新启动服务器:

我搜索了两天,更改了实体中的每个配置和注释。

我不知所措,提前谢谢你的帮助!

共有1个答案

段坚
2023-03-14

我的猜测是当你没有更新关系的双方。因为您从不添加OneToMany,当您重新阅读它时,它是空的。你需要维持双方的关系。

参见,http://en.wikibooks.org/wiki/java_persistence/relationships#object_corruption.2c_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

默认情况下,EclipseLink启用共享缓存。当您重新读取来自缓存的对象时,它仍然具有您保持的状态。

即使没有共享缓存,在单个实体管理器/事务中也会出现此问题。

您可以始终禁用共享缓存来避免这个问题,但是您仍然需要修复您的代码。

 类似资料:
  • Hibernate 认为持久化类(persistent class)新实例化的对象是瞬时(Transient)的。我们可通过将瞬时(Transient)对象与 session 关联而把它变为持久的(Persistent)。 DomesticCat fritz = new DomesticCat(); fritz.setColor(Color.GINGER); fritz.setSex('M');

  • 1. 前言 本节课和大家聊聊持久化对象的 3 种状态。通过本节课程,你将了解到: 持久化对象的 3 种状态; 什么是对象持久化能力。 2. 持久化对象的状态 程序运行期间的数据都是存储在内存中。内存具有临时性。程序结束、计算机挂机…… 内存中的数据将不复存在。 重要的数据,需要使用持久化技术将数据保存到永久性设备上。Hibernate 能够通过 PO(持久化对象) 将数据持久化到数据库。 Hibe

  • 创建新的Shelf # shelve_create.py import shelve with shelve.open('test_shelf.db') as s: s['key1'] = { 'int': 10, 'float': 9.5, 'string': 'Sample data', } # shelve_existing

  • 在传统的Web开发中,PHP创建的对象、数据、资源等会在请求完毕后全部释放,导致很难做到持久化。而在WorkerMan中可以轻松做到这些。 在WorkerMan中如果想在内存中永久保存某些数据资源,可以将资源放到全局变量中或者类的静态成员中。 例如下面的代码: 用一个全局变量$connection_count保存一个当前进程的客户端连接数。 <?php use WorkermanWorker; r

  • 问题内容: 我对学习Node and Express并不陌生,但我仍在尝试用express围绕代码流。假设我们在session.js中有如下代码: 假设用户是必需的mongo模式。我发现奇怪的是session.user分配: 由于req变量在重定向后将超出范围,但是我们显然是在执行此操作以保留用户数据,因此我需要弄清楚以下哪种情况描述了正在发生的情况。(A)被分配给req参数的参数(在调用回调时)

  • 我有一个简单的JPA存储库,看起来如下所示: 和两个有一个单子映射的类,如下所示: . 现在,我知道我可以很容易地编辑和持久化一个像这样的用户实例: 但是,在没有指向实例的指针的上下文中,如何持久化实例,f.I.: 我可以只调用吗? 我是否需要自动连接另一个存储库()并在其上调用.save()?