使用自定义Query在Spring Repository中访问集合字段

时间:2016-12-14 00:42:01

标签: java spring-data jpql

我试图查询从我的应用程序中搜索包含内容或标签名称上的关键字的所有帖子,但只搜索那些公开的帖子。我试图进行JPQL搜索,但我不知道如何访问tags.name属性。

注意: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)")

我查看了文档,但是我没有看到任何选项来管理这个,最好的方法是什么?

谢谢!

1 个答案:

答案 0 :(得分:2)

由于多个tag可与post相关联,因此@OneToManyPost的关系为Tagjoin应该适用于此方案。

试试这个。

@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 :我没有对此进行过测试,但它应该有效。