2016-12-14 10 views
0

コンテンツまたはタグ名に公開されているキーワードのみを含むすべての投稿を検索するクエリを作成しようとしています。私はJPQL検索をしようとしていますが、tags.nameプロパティにアクセスする方法はわかりません。カスタムクエリを使用したSpringリポジトリのアクセスコレクションフィールド

注:Postは、Tagエンティティのリストを持つエンティティです。

私はこれを試してみましたが、(私が期待通りに)働いていない

@Query("SELECT p FROM Post p WHERE (p.content LIKE CONCAT('%', LOWER(:keyword),'%' OR p.tags.name LIKE CONCAT('%', LOWER(:keyword)) AND (p.open IS TRUE)") 

私はドキュメントを見てきましたが、私は行くための最良の方法は何か、これを管理するための任意のオプションが表示されませんここに?

ありがとうございます! tag sはpost関係と関連付けることができる複数ので

答えて

2

PostTagから@OneToManyあります。このシナリオではjoinが有効です。

これを試してください。

@Query("SELECT p FROM Post p left join p.tags pTags WHERE (p.content LIKE CONCAT('%',LOWER(:keyword),'%' OR pTags.name LIKE CONCAT('%',LOWER(:keyword)) AND (p.open IS TRUE)") 

PS:私はこれをテストしていませんが、それが動作するはずです。

+0

はい、結局私はこれを好きでした。私はSpring Dataにこれを行う別の方法がありますが、これはこの場合の唯一の答えです。それは完璧に働いています、ありがとう! –

+0

うれしかった! –

関連する問題