使用 Spring CrudRepository 时的“不等于”条件

问题描述 投票:0回答:4

我应该如何构建我的 findBy 方法名称,以便我可以实现 where 子句 -

statusCode != 'Denied'

这是一个选择吗?

findByStatusCodeNotIn(List<String> statusCode);

如果我只想传递

String
而不是
List
怎么办?

谢谢你

spring-data-jpa spring-data findby
4个回答
77
投票

您是否看过Spring Data JPA

文档
中有关此内容的文档?

#findByStatusCodeNot(String statusCode);

这类似于文档中的示例:

#findByLastnameNot

23
投票

根据Spring Data JPA文档https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#reference

您可以使用

Not
关键字来实现此目的。例如你的方法会变成

findByStatusCodeNot(String statusCode);

这意味着要实现

statusCode != 'Denied'
,您可以将该方法称为

findByStatusCodeNot('Denied');

5
投票

@Dovmo 是对的,但还要记住,如果您对

String
数据进行操作,则可能需要考虑大小写,即
findByStatusCodeNot(String statusCode)
只会查找不是
'Denied'
的记录,但不是例如
'DeniEd'
。对于不区分大小写的搜索,您可以附加
IgnoreCase
-
findByStatusCodeNotIgnoreCase(String statusCode)

一般来说,请点击@Dovmo 提供的链接。


0
投票

根据 spring JPA 存储库文档,我们可以使用 <> 符号代替 != 所以查询是

statusCode <> 'Denied'
如果您想编写 @Query 而不是内置存储库方法,这将很有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.