我正在尝试进行查询以搜索我的应用程序中包含内容或标签名称关键字的所有帖子,但仅限于那些公开的帖子。我正在尝试进行 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)")
我已查看文档,但没有看到任何管理此问题的选项,这里最好的方法是什么?
谢谢!
最佳答案
由于多个 tag
可以与 post
关联,因此关系是从 Post
到 @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:我还没有测试过这个,但它应该可以工作。
关于java - 使用自定义查询访问 Spring Repository 中的集合字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41132982/