微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用spring boot data jpa同时在同一列或字段上使用Like,In

如何解决如何使用spring boot data jpa同时在同一列或字段上使用Like,In

我想做的事情是查看可以通过使用In运算符执行的列表,但我想使用%运算符来匹配字符串是否包含特定部分

Example Db

Records

Id    tags     date

1     d,...

2     d1,d,...

3     d2,...

我要触发的查询是包含d1,d的标签,这些d1和d是不同的字符串,与我将通过的值列表不同

但是当我尝试同时使用Like和In时,它们会给出

My Jpa query

Jpa->   
 Page<Blog> findByTagsInLike(List<String> tags,Pageable page);


Error->
        ... 42 common frames omitted
    Caused by: org.springframework.data.mapping.PropertyReferenceException: No property in found for type String! Traversed path: Blog.tags.
        at org.springframework.data.mapping.PropertyPath.<init>(PropertyPath.java:94) ~[spring-data-commons-
        at org.springframework.data.mapping.

即使我更改了“赞”和“ In”的位置,仍然出现相同的错误,但在我无法使用“ In”之后,找不到任何属性

错误在运行时发生

解决方法

首先,您应该有一个单独的tag表来保存所有标签,并且应该使用N对N的关系ta标签与博客建立连接。 其次,您的tags字段是String,并且当您将Java Object属性连接到该字段时,您应该将其设为String tags。这意味着它不是List。因此,您不能像findByTagsInLike那样使用它,因为它不是List,而是String。 您可以在JPA存储库中更改查询方法:

List<Blog> findByTagsLike(String tags,Pageable page);

要使用此功能,您应该传递以下内容:

blogRepository.findByTagsLike("%d1,d%",...); // Keep in mind that this method returns `List` of all `Blog` with given `like` operation.

现在,您需要一些方法来构建标签like操作表达式,并且可以自己编写。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。