2011-07-13 6 views
3

hibernateの基準仕様では、テーブルにプロパティをグループ化する場合は、Projections.groupPropertyを使用する必要があります。問題は、テーブルのすべてのフィールドを選択できないことです。エンティティグループからhibernate byすべての投影グループを選択

SELECT *フィールド

BY私は休止状態の基準でグループを使用する場合は、groupPropertyが存在しなければならず、SQLの結果は次のようになります:

私がしたいことはある SELECTフィールドFROMエンティティGROUP BYフィールド。

私が欲しいものを手に入れる方法はありますか?私はすべての(選択*)を選択したいとき、ハイバネートコードで、CriteriaJoinWalkerで参照してください、コードはすでに投影があるかどうかを指定しています。私がその振る舞いを変えたいのであれば、私はCriteriaJoinWalkerコードを変更しなければなりません。私はコードを修正することができ、私が望む結果を得ることができるかもしれませんが、できれば私のプロジェクトに休止状態のコアコードを上書きしたくありません。コードを変更せずに直接変更する方法はありますか?あなたは、突起を使用している場合

// CriteriaJoinWalker 
    if(translator.hasProjection()) 
    { 
     resultTypes = translator.getProjectedTypes(); 
     initProjection(translator.getSelect(), translator.getWhereCondition(), translator.getOrderBy(), translator.getGroupBy(), LockMode.NONE); 
    } else 
    { 
     resultTypes = (new Type[] { 
      TypeFactory.manyToOne(persister.getEntityName()) 
     }); 
     initAll(translator.getWhereCondition(), translator.getOrderBy(), LockMode.NONE); 
    } 

おかげ

答えて

1

は、あなたは、全体として、Entityオブジェクトを取得することができなくなります。残念ながら、休止状態はあなたを助けません。このIssueをチェックアウトし、さらにthreadをチェックしてください。

+0

ええ、私は知っている...前に言ったように。プロジェクションからエンティティを取得する方法がないようです。 – Jef

関連する問題