2016-07-04 6 views
6

現在、CriteriaBuilderを使用してhibernateで二重の結果を得ています。Hibernate CriteriaBuilderは複数の行を1つに連結します

イベントIDを格納するテーブルと、IDを持つ複数の値を別のテーブルに格納する結合テーブルがあります。例えば;

イベント

ID .... 
--------- 
1123 
1124 
1125 

これは明らかに二重の結果になります..例えば、テーブル

ID event_id tag_id 
---------------------- 
1 1124  2 
2 1124  3 
3 1123  6 
4 1123  7 

タグ

ID tag 
--------- 
1 Dance 
2 Hiphop 
... 

に参加。

eventID ... tag_id tag 
-------------------- 
1124  2  Hiphop 
1124  3  Dance 

hibernateのCriteriaBuilder内で結果セットを取得することは可能ですか?

eventID ... tag_id tag 
-------------------- 
1124  2,3  Hiphop, Dance 

私は、SQLサーバー自体の中に複数のソリューションを見てきましたが、私はHibernateのCriteriaBuilderを使ってものを見つけることができません。

答えて

6

私は、CriteriaBuilderだけを使用して解決策を知りません。 2つの選択肢があります。この表は、イベントエンティティとTAGの間の多対多の関係のようです。

  1. イベントエンティティに@Formulaアノテーションを持つ2つのフィールドを追加します。 @Formulaアノテーションを使用すると、いくつかのSQL文を使用でき、現在のエンティティのパラメータを使用できます。数式の内部では、SQL独自のアプローチを使用することができます

  2. もちろん、EventオブジェクトにTagオブジェクトのコレクションがある場合、これをJavaで行うことができます。おそらくすでにあなたが検討している可能性もあります。

関連する問題