1

私のクエリは次のとおりです。

            List<EmpModel> EmpData = sess2.createCriteria(EmpModel.class)
          .setFetchMode("TestModel", FetchMode.JOIN)  
          .add(Property.forName("id").in(emp_ids)).list();

これで、実行されたクエリは完全に正しいものになりました。test テーブルと emp テーブルの 1 対 1 結合を返します。ただし、返された print ステートメントでは、EmpModel テーブルの値しか得られません。この理由は、上記の emp_ids が常にゼロになり、テスト テーブルのすべての値が null になるためだと思います。誰かがこのエラーを乗り越える方法を教えてもらえますか?

4

1 に答える 1

0

条件でインスタンスも返すTestModelようにする場合は、別の条件と結果トランスフォーマーを追加できます。エンティティを投稿していないため、たとえばEmpModelプロパティがある 場合testModel:

List<<HashMap<String, Object>> EmpData = sess2.createCriteria(EmpModel.class)
  .add(Property.forName("id").in(emp_ids))
  .createAlias("testModel", "tm")
  .setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP)
  .list();

クエリが のリストを返すようになったため、戻り値の型が からList<EmpModel>に変更されていることに注意してください。各 HashMap には、 を指すエントリと、対応する を指すエントリ (クエリを作成するときに割り当てたエイリアス) があります。List<<HashMap<String, Object>>HashMap"this"EmpModel"tm"TestModel

setFetchModePS:コードからを削除しました。どういうわけか、上記のアプローチでは機能しません。

于 2013-06-20T01:23:16.403 に答える