0

JPA と Hibernate を使用していますが、少なくとも私にとっては、HQL を構築するには複雑すぎる必要があります。ネイティブ SQL を使用することにしました。子リストを含むいくつかのレコード/エンティティを取得する必要がありますが、子をフィルターする必要があります。すべての子は必要ありません。これは可能ですか?

たとえば、次のような3つのテーブルがあります

会話テーブル: id

メール テーブル: ID、会話 ID、送信者 ID

user_table: id、married_bool

既婚ユーザーから送信された sconversationで満たされたリストを持つエンティティが必要です。mail

ここまでやってみた

Select * from conversation_table join mail_table on ( mail_table.sender_id=user_table.id and user_table.married_bool=true) 

次のようなエラーが表示されます。

user_table is unknown

私は試した

Select * from (conversation_table, user_table, mail_table) join mail_table on ( mail_table.sender_id=user_table.id and user_table.married_bool=true)

私は得ています

mail_table is non unique table/alias

これは簡単な例にすぎません。また、recipient_table などの他のテーブルのメール エンティティのエンティティ リストを入力する必要があります。ネイティブ クエリでもこれらを入力するために結合句を追加する必要があると思います。よろしいですか? また、この追加の結合句を試すと、「不明」/「一意でないエイリアス」エラーが発生します。

提案をありがとう。

4

2 に答える 2

1

このようなもの:

SELECT *
FROM conversation_table CT
   JOIN mail_table MT
      ON CT.Id = MT.conversation_id
   JOIN user_id UI
      ON MT.sender_id=UI.id
WHERE UT.married_bool = 1 
于 2013-01-04T12:37:22.187 に答える
1

このクエリに本当に Hibernate ORM を使用したい場合は、Criteria Query が最適な方法です。最近、同じ要件があり、基準のみを使用しています。

于 2013-01-04T13:15:04.083 に答える