8

是否有我缺少的注释或者这是对休眠检索的限制?

实体:

class A {
   Long id;
   Set<B> b;

   @ManyToMany(fetch = FetchType.EAGER)
   @JoinTable(name = "A_B", joinColumns = @JoinColumn(name = "A_ID"), inverseJoinColumns = @JoinColumn(name = "B_ID")
   public Set<B> getBs() {
      return b;
   }

}

class B {
   Long id;
   Set<C> c;

   @ManyToMany(fetch = FetchType.EAGER)
   @JoinTable(name = "B_C", joinColumns = @JoinColumn(name = "B_ID"), inverseJoinColumns = @JoinColumn(name = "C_ID")
   public Set<C> getCs() {
      return C;
   }

}

DAO:

class ADaoImpl {    
   public A load(Long id) {
      return new A((A) session.load(A.class, id);
   }
}

当我尝试加载 A 时,我得到一个

Caused by: java.lang.NullPointerException
at org.hibernate.engine.internal.StatefulPersistenceContext.getLoadedCollectionOwnerOrNull(StatefulPersistenceContext.java:853)
4

2 回答 2

8

我有一个与此非常相似的问题,即我有嵌套集合,并且每个集合的 hashCode 方法都显示在堆栈跟踪中。在 hashCode 方法中,它们相互引用,所以我在 hashcode 方法中删除了对每个对象的引用,我不再得到这个异常

于 2016-01-18T20:27:55.407 回答
1

我认为这不是完全的例外,对吧?

A 类的二传手在哪里?A 类中的 b 集合是友好范围的,那么休眠将无法写入/注入它的值。B 类中的 C 集合也是如此。

请在此处复制您的 hibernate.xml 和任何其他配置类。hibernate/java 版本也很重要。

于 2013-07-06T00:59:21.083 回答