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

Hibernate:空集合而不是惰性加载错误

彭兴朝
2023-03-14

我有一个由Hibernate加载的ORM实体,当我需要时,会加载某些关联。该实体通过MQ传输到客户机应用程序(客户机是.NET,所以我使用MessagePack来序列化/反序列化),当实体被MsgPack序列化时,它试图访问惰性加载的关联,但失败了,因为会话已经关闭。即使它没有失败,我也不希望它在某些情况下加载关联。

是否有一种方法告诉hibernate使用空值而不是某些查询结果的代理来填充惰性关联,或者我必须迭代返回的列表并自己执行这些更改?

谢谢你的回答!

共有1个答案

高溪叠
2023-03-14

您别无选择,只能使用DTO对象,通过MQ传输它,

  1. 使用Hibernate从数据库加载实体
  2. 将其转换为DTO对象,该对象隐含serializable.
  3. 使用MQ将其传输给消费者
  4. 将其转换为另一边的任何其他实体。
 类似资料:
  • 问题内容: 在我的JavaFX应用程序中,当我对EmbeddedId类使用 Non Lazy Collection 选项时,为了保持双向关系,它将产生以下异常。经过几个小时的工作后,我仍然无法解决它。实体类如下。谢谢。 EmbeddedId类 WorkflowStep实体 (带有EmbeddedId) WfScriptTemplate实体 (带有双向关系) PostgreSQL异常 MySQL异常

  • 我有两个大表(每个表>一亿行),让我们把它们称为Parent和Child(Parent与Child有一个懒散的一对多关系)。当我使用联接提取时,查询速度非常慢,而且我还得到一个Hibernate警告“HH000104 firstresult maxresults specified with collection fetch Application in Memory”,因为我使用了一个限制。 因

  • 我以primefaces页面为例(http://www.primefaces.org/showcase/ui/datatableLazy.jsf),它起了作用,但因为示例是在构造函数上加载列表,所以它并不是完全的延迟加载。我知道这是一个虚构的例子,所以我在我的bean上添加了以下几行 我的初始化功能我把一些部分改成了这个 我的FichaLazyList是这样的 我得到这个错误, 第55行是这个吗

  • 我们目前有几个@OneToOne关系,由于已知的惰性加载的限制,它们总是会急切地从反方向获取。 为了启用逆关系的延迟加载,我正在尝试启用构建时字节码检测。 到目前为止我所做的... 这些关系现在不再急切地加载...但是它们也不会延迟加载,它们只是静默地返回null。 我尝试从实体中删除接口和字段,因为我不确定是否需要这样做,在此之后,我在启动时不再获得消息,并且默认情况下返回到急切加载。 我是不是

  • 问题内容: 我记得在JPA或hibernate中有一个注释,告诉hibernate使用getId / setId方法而不是property(我们注释属性)。如果没有此设置,则getId会导致命中数据库并填充该对象的所有字段,这不是我想要的。有人知道该注释是什么吗? 例: 因此,当id已在hibernate项目代理对象中时,ticket.getProject.getId()导致命中数据库以获取项目。