为了账号安全,请及时绑定邮箱和手机立即绑定

Spring Boot:JPA 支持的关键字

Spring Boot:JPA 支持的关键字

达令说 2023-08-04 15:21:56
我想要执行 Spring JPA 存储库,其中想要在两列之间应用 and 操作,其中一个列云中有多个值。相同的 SQL 查询:select * from table_name where col1='col1_val' and col2 IN ('col2_val_a','col2_val_b','col2_val_c');我知道对于 和 操作,我可以扩展 JpaRepository 并创建方法,如下所示:List<MyPoJoObject> findByCol1AndCol2(String col1_val,String col2_val);对于 IN 操作,我们可以使用:findByCol2In(Collection<String> col2_val)但我不知道如何按照我之前提到的 sql 语句将提到的 JPA 默认方法合并为一个。
查看完整描述

3 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

您可以使用以下方法:

List<MyPoJoObject> findByCol1AndCol2In(String col1_val, Collection<String> col2_val);
查看完整回答
反对 回复 2023-08-04
?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

您当然可以将两者结合为一种方法。

List<MyPoJoObject> findByCol1AndCol2In(String col1_val,String[] col2_val);

尝试这个。我不确定它是否会接受Collection<String>。我会尝试并更新答案。


查看完整回答
反对 回复 2023-08-04
?
繁花如伊

TA贡献2012条经验 获得超12个赞

如果您想对两列以上执行此逻辑,那么您的方法名称将变得冗长。


为什么不能编写自己的 JPA 查询,而不是坚持使用 Spring 命名呢?


例子:


@Query("select pojo from MyPoJoObject as pojo where pojo.col1 = :col1_val and pojo.col2 in :col2_val")

List<MyPoJoObject> findByColumns(String col1_val, List<String> col2_val);


查看完整回答
反对 回复 2023-08-04
  • 3 回答
  • 0 关注
  • 112 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信