2016-05-24 3 views
1

Java Spring hibernateでテーブルを結合する際に問題があります。ここに私の問題があります:Java Spring Hibernateで複数のテーブルに結合する

私はWebサイトを開発しています。自分のページの1つで、x、y、zの3つのテーブルからデータが必要です。私はそれぞれをエンティティにマッピングし、独自のリポジトリを持っています。このページでは、私はこのクエリを使用してデータを表示しています:

SELECT x.a, y.b, z.c FROM x,y,z WHERE x.id = y.name AND z.id = y.personalId AND 
(x.id like %'searchedId'% or y.id like %'searchedId'% or z.id like %'searchedId'%) AND 
(x.name like %'searchedName'% or y.name like %'searchedName'% or z.name like %'searchedName'%) 

問題がsearchedIdとsearchedNameは任意の列で、で、彼らは空の文字列とするとき、彼らは私が配置する必要はありません空の文字列です可能性がありそれらをスピードアップするために私の質問に入れてください。私はcriteria builderを使ってみましたが、結果が複数のテーブルから結合されているので、それらを任意のリポジトリに入れることはできません。申し訳ありません

StringBuilder query = new StringBuilder("SELECT x.a, y.b, z.c FROM x,y,z WHERE x.id = y.name AND z.id = y.personalId "); 

if (searchId !=null) 
    query .append(" AND 
(x.id like %'searchedId'% or y.id like %'searchedId'% or z.id like %'searchedId'%) "); 

if (searchedName !=null) 
    query .append(" AND 
(x.name like %'searchedName'% or y.name like %'searchedName'% or z.name like %'searchedName'%) "); 

SQLQuery query = session.createSQLQuery(query); 
List result = query.list(); 

答えて

2

この場合、あなたはそれから動的に以下のようなネイティブクエリ何かを構築することができます。たぶんあなたはそれらを置くことを忘れた。
+0

を私は動的にクエリを構築し、あなたの見ることができません。 –

+0

私は今すぐ追加しました。あなたはnativeSQLクエリを作成することができます。searchIdとsearchNameはnullにならず、メインクエリに追加されます。 – shankarsh15

+0

それをどうすればいいですか?私はリポジトリに入れるべきですか?戻り値は何ですか?申し訳ありませんが、私はこれで新しいです。 –

関連する問題