java - JPA CascadeType.REFRESH 不工作?

标签 java jpa

我遇到了一个关于 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/

相关文章:

java - 如何防止logback/slf4j解析换行符

java - 使用给定参数过滤 Java 流

java - 如何在文字上书写时显示图像

java - 无法延迟加载 JPA 关系

Java 正则表达式匹配不正确

java - JPA 2.0 在刷新操作时从映射父类(super class)继承空字段

java - 无法从唯一字段的外键表中获取数据

java - BIT(1) HIbernate JPA 映射

java - JPA BigInteger 正在映射到 MySQL 的十进制?

java - 如何强制两个类具有相同的某些变量集而不继承,并带有注释?