gpt4 book ai didi

java - JPA CascadeType.REFRESH 不工作?

转载 作者:行者123 更新时间:2023-11-29 06:18:55 26 4
gpt4 key购买 nike

我遇到了一个关于 JPA CascadeType.REFRESH 属性的奇怪问题。我有一个简单的父子关系,其中在父域对象(LineEquipmentFormat)中我添加了如下的级联属性

OneToMany(cascade = { CascadeType.REFRESH, CascadeType.MERGE, CascadeType.PERSIST,
CascadeType.REMOVE}, mappedBy = "lineEquipmentFormat")
public List<LineEquipmentFormatDivision> getLineEquipmentFormatDivisions() {
return lineEquipmentFormatDivisions;
}

但是当我从数据库中获取父 LineEquipmentFormat 对象时,我没有获得 LineEquipmentFormatDivisions 的列表。

我得到的错误是

  17:46:34,251 ERROR [LazyInitializationException] failed to lazily initialize a collection of role: LineEquipmentFormat.lineEquipmentFormatDivisions, no session or session was closed
org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: LineEquipmentFormat.lineEquipmentFormatDivisions, no session or session was closed
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationException(AbstractPersistentCollection.java:380)
at org.hibernate.collection.AbstractPersistentCollection.throwLazyInitializationExceptionIfNotConnected(AbstractPersistentCollection.java:372)
at org.hibernate.collection.AbstractPersistentCollection.initialize(AbstractPersistentCollection.java:365)
at org.hibernate.collection.AbstractPersistentCollection.read(AbstractPersistentCollection.java:108)
at org.hibernate.collection.PersistentBag.toString(PersistentBag.java:506)

我正在使用 Jboos 5.1 和 Oracle 10G。

请就此错误的可能根本原因提供更多信息。

谢谢

最佳答案

当您将级联类型定义为刷新时,这意味着当在父 LineEquipmentFormat 上调用 entityManager.refresh() 时,它也会在子 LineEquipmentFormatDivisions 上调用。但是,您收到的错误表明您试图在 session 关闭时延迟初始化集合。如果您在 session 关闭后需要此集合,则需要通过设置 fetchType 来急切地获取它们。

关于java - JPA CascadeType.REFRESH 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3996750/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com