GORM,get org.hibernate.HibernateException:在afterLoad()中打开事务时发现同一集合的两个表示形式

GORM,get org.hibernate.HibernateException:在afterLoad()中打开事务时发现同一集合的两个表示形式,hibernate,grails,gorm,Hibernate,Grails,Gorm,在大多数情况下,它是有效的,直到我在控制器中调用下面的列表 class A { def afterLoad() { A.withTransaction { } } } 将引发异常:org.hibernate.HibernateException:找到同一集合的两个表示形式 如果我删除 A.createCriteria().list{.....} 然后它就会工作。可能是 A.withTransaction 将帮助您可能 A.withTransaction 我会帮你

在大多数情况下,它是有效的,直到我在控制器中调用下面的列表

class A {
  def afterLoad() {
    A.withTransaction {

    }
  }
}
将引发异常:org.hibernate.HibernateException:找到同一集合的两个表示形式

如果我删除

A.createCriteria().list{.....}
然后它就会工作。

可能是

A.withTransaction
将帮助您

可能

A.withTransaction

我会帮你的

我自己也遇到过这个例外,这几天我真的被难住了。您可以查看此问题的解决方案是否解决了您的问题:


这个解决方案对我不起作用,所以我写了一篇文章来描述这个问题以及我为解决这个问题所做的一切。我相信您的问题与我的问题类似,因为事务方面,Hibernate在提交事务时刷新会话,这就是引发异常的地方。

我自己也遇到过这个异常,我真的被它难住了几天。您可以查看此问题的解决方案是否解决了您的问题:


这个解决方案对我不起作用,所以我写了一篇文章来描述这个问题以及我为解决这个问题所做的一切。我相信您的问题与我的问题类似,因为事务方面,Hibernate在提交事务时刷新会话,这就是引发异常的地方。

我没有尝试,我需要这些代码中的事务。现在,我将围绕列表{…}代码添加一个.withTransaction。但我想知道原因。我没有尝试,我需要这些代码中的事务。现在,我将围绕列表{…}代码添加一个.withTransaction。但我想知道原因。