java - 使用自定义查询访问 Spring Repository 中的集合字段

标签 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)")

我已查看文档,但没有看到任何管理此问题的选项,这里最好的方法是什么?

谢谢!

最佳答案

由于多个 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/

相关文章:

javascript - 如何 Intent 在Webview中打开Whatsapp?

java - 是否可以将属于某个类的对象分配给子类类型的变量而不进行强制转换?

java - 如何将修改(OWL文件的创建、更新)保存到fuseki服务器中

java - Spring 数据JPA : Query Optimization

java - spring jpa中查询是按关键字查找时如何使用order by

java - 无法执行 : javax. ws.rs.NotSupportedException:找不到类型的消息正文阅读器:T 内容类型:application/xml

java - 传递的分离实体在 Spring-Data 中持久存在

spring - 将 hibernate-seach-orm 添加到 POM 后出现 AbstractMethodError

java - Spring Data JPA 和 Exists 查询