Java springboot:JPA支持的关键字

Java springboot:JPA支持的关键字,java,spring,spring-boot,spring-data-jpa,spring-data,Java,Spring,Spring Boot,Spring Data Jpa,Spring Data,我想执行SpringJPA存储库,在其中一个列云中有多个值的两个列之间应用and操作 对相同的SQL查询: 从col1='col1\u val'和col2所在的表名称中选择* ('col2_val_a'、'col2_val_b'、'col2_val_c') 我知道对于和操作,我可以扩展JpaRepository并创建如下方法: List<MyPoJoObject> findByCol1AndCol2(String col1_val,String col2_val); List fi

我想执行SpringJPA存储库,在其中一个列云中有多个值的两个列之间应用and操作

对相同的SQL查询:

从col1='col1\u val'和col2所在的表名称中选择* ('col2_val_a'、'col2_val_b'、'col2_val_c')

我知道对于和操作,我可以扩展JpaRepository并创建如下方法:

List<MyPoJoObject> findByCol1AndCol2(String col1_val,String col2_val);
List findbycol1和col2(字符串col1\u val,字符串col2\u val);
对于IN-operation,我们可以使用:
findByCol2In(Collection col2\u val)


但是,根据前面提到的sql语句,我不知道如何将上述两种JPA默认方法合并为一种方法。

您可以使用以下名为的方法:

List<MyPoJoObject> findByCol1AndCol2In(String col1_val, Collection<String> col2_val);
列出findbycol1和col2in(字符串col1\u val,集合col2\u val);

在这个链接上,您可以找到
存储库查询关键字
,您可以使用它们并将它们组合起来

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

List<MyPoJoObject> findByCol1AndCol2In(String col1_val,String[] col2_val);
列出findbycol1和col2in(字符串col1\u val,字符串[]col2\u val);
试试这个。我不确定它是否接受
收集
。我将尝试并更新答案


HTH.

如果要对两个以上的列执行此逻辑,则方法名称将变得冗长

为什么不能编写自己的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);
@Query(“从MyPoJoObject中选择pojo作为pojo,其中pojo.col1=:col1_val和pojo.col2 in:col2_val”)
List findByColumns(字符串col1\u val,List col2\u val);

我们可以使用上面评论中提到的spring默认运算符。谢谢你的评论。