我试图查询从我的应用程序中搜索包含内容或标签名称上的关键字的所有帖子,但只搜索那些公开的帖子。我试图进行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)")
我查看了文档,但是我没有看到任何选项来管理这个,最好的方法是什么?
谢谢!
答案 0 :(得分:2)
由于多个tag
可与post
相关联,因此@OneToMany
与Post
的关系为Tag
。 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 :我没有对此进行过测试,但它应该有效。