我想要執(zhí)行 Spring JPA 存儲(chǔ)庫(kù),其中想要在兩列之間應(yīng)用 and 操作,其中一個(gè)列云中有多個(gè)值。相同的 SQL 查詢:select * from table_name where col1='col1_val' and col2 IN ('col2_val_a','col2_val_b','col2_val_c');我知道對(duì)于 和 操作,我可以擴(kuò)展 JpaRepository 并創(chuàng)建方法,如下所示:List<MyPoJoObject> findByCol1AndCol2(String col1_val,String col2_val);對(duì)于 IN 操作,我們可以使用:findByCol2In(Collection<String> col2_val)但我不知道如何按照我之前提到的 sql 語(yǔ)句將提到的 JPA 默認(rèn)方法合并為一個(gè)。
3 回答

慕標(biāo)琳琳
TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以使用以下方法:
List<MyPoJoObject>?findByCol1AndCol2In(String?col1_val,?Collection<String>?col2_val);

斯蒂芬大帝
TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊
您當(dāng)然可以將兩者結(jié)合為一種方法。
List<MyPoJoObject> findByCol1AndCol2In(String col1_val,String[] col2_val);
嘗試這個(gè)。我不確定它是否會(huì)接受Collection<String>
。我會(huì)嘗試并更新答案。

繁花如伊
TA貢獻(xiàn)2012條經(jīng)驗(yàn) 獲得超12個(gè)贊
如果您想對(duì)兩列以上執(zhí)行此邏輯,那么您的方法名稱將變得冗長(zhǎng)。
為什么不能編寫自己的 JPA 查詢,而不是堅(jiān)持使用 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);
添加回答
舉報(bào)
0/150
提交
取消