2017-02-27 5 views
0

私はこれに問題がありますが、どうなるかはわかりません。質問に間違いはありますか?なぜ異なるクエリを返すのですか?基準とHQLは同じクエリを構成しません

基準:スレッドで

Query query = session.createQuery("FROM InventoryLocationAsset"); 
result = query.list(); 

例外 "メイン" org.hibernate.ObjectNotFoundException:が、重複結果

HQLと

Criteria cr = session.createCriteria(InventoryLocationAsset.class); 
result = cr.list(); 

ワークス微細所与とは行識別子が存在する


基準:罰金が、重複した結果

HQLと

Criteria cr = session.createCriteria(InventoryLocationAsset.class); 
cr.fetchMode("asset", FetchMode.JOIN); 
result = cr.list(); 

作品:

Query query = session.createQuery("FROM InventoryLocationAsset _ILA JOIN FETCH _ILA.asset"); 
result = query.list(); 

作品罰金!

答えて

0

あなたのエラーは最初のHQLクエリである(重複要素なし):

Query query = session.createQuery("FROM InventoryLocationAsset"); 
result = query.list(); 

はなるだろう。このように

Query query = session.createQuery("FROM " + InventoryLocationAsset.class.getName()); 
result = query.list(); 

あなたのクラスのすべてのパスを入れます。重複した行について

あなたInventoryLocationAssetは、他の基本クラスですか?はいの場合は、polimorphismプロパティが設定されていることを確認してください(explicitである必要があります)

関連する問題