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 コレクションはフレンドリ スコープであり、hibernate はその値の書き込み/注入を行うことができません。同じことがクラス B の C コレクションにも当てはまります。

hibernate.xml とその他の構成クラスをここにコピーしてください。hibernate/java のバージョンも重要です。

于 2013-07-06T00:59:21.083 に答える