2

次の射影で始まるクエリがあるとします。

SELECT t.term as term, count(g.id) as amount

これは生の SQL で、Hibernate セッション オブジェクトで createSqlQuery を使用しています。私がやりたいのは、これらの予測を取得して、「term」および「amount」プロパティを持つオブジェクトに配置することです。

HQL では、"select new ClassName(...)" を使用できますが、生の SQL クエリでは機能しません。

どうやってそれをするのですか?大量の [LObject が返されました... が、それらをどう処理すればよいかわかりません。Hibernate にそれらをある種の非エンティティ値オブジェクトに入れることができれば、それは素晴らしいことです。

ありがとう!

4

2 に答える 2

2

Hibernate にそれらをある種の非エンティティ値オブジェクトに入れることができれば、それは素晴らしいことです。

「結果トランスフォーマー」を適用することで、ネイティブ SQL クエリから非管理値オブジェクトを返すように Hibernate に指示できます。リファレンス ドキュメントから:

16.1.5. 管理されていないエンティティを返す

ResultTransformer をネイティブ SQL クエリに適用して、管理されていないエンティティを返すことができます。

sess.createSQLQuery("SELECT NAME, BIRTHDATE FROM CATS")
        .setResultTransformer(Transformers.aliasToBean(CatDTO.class))

このクエリは次を指定しました。

  • SQL クエリ文字列
  • 結果変換器

上記のクエリは、 インスタンス化され、対応するプロパティまたはフィールドにおよび CatDTOの値が挿入されたリストを返します。NAMEBIRTHNAME

于 2010-07-06T08:20:29.057 に答える
0

http://docs.jboss.org/hibernate/core/3.3/reference/en/html/querysql.html#d0e13696を確認してください

sess.createSQLQuery("SELECT ID, NAME, BIRTHDATE, DOG_ID FROM CATS").addEntity(Cat.class)

termプロパティとamountプロパティを持つオブジェクトにこれらの2つのオブジェクト属性しかない場合生のSQLを使用した同様のクエリは、それらのオブジェクトのリストを返し、それらを1つずつ繰り返すことができます。

于 2010-07-06T03:03:56.793 に答える