%Like% 在 Spring JpaRepository 中查询 List<String> 类型的属性
Posted
技术标签:
【中文标题】%Like% 在 Spring JpaRepository 中查询 List<String> 类型的属性【英文标题】:%Like% Query in spring JpaRepository for property of type List<String> 【发布时间】:2021-03-24 06:48:34 【问题描述】:我想编写一个查询来查找包含特定字符串的记录,该字段是 在我的实体中定义为列表。
这是我的 JPA 实体:
@Entity
public class Bank extends EntityBase<Bank>
.
.
.
@Column(name = "sms_numbers")
@Convert(converter = StringListConverter.class)
private List<String> smsNumbers;
.
.
.
SQL 应该是这样的:
select * from banks where sms_numbers like '%2000400%'
我的存储库会是这样的:
@Repository
interface BankRepository extends RepositoryBase<Bank>
@Query("SELECT b FROM Bank b WHERE b.smsNumbers LIKE '%2000400011%'")
List<Bank> findReservedSmsNumbers();
但是这段代码不起作用,因为 Bank.smsNumbers 是 List Not String 。
那我该如何解决呢?
【问题讨论】:
【参考方案1】:在这种情况下,您可以使用本机查询而不是 jpql 所以您的存储库将是:
interface BankRepository extends RepositoryBase<Bank>
@Query(value = "select * from banks b where b.sms_numbers like
concat('%',:sNumber,'%') " , nativeQuery = true)
List<Bank> findReservedSmsNumbers(String sNumber);
.
.
.
【讨论】:
以上是关于%Like% 在 Spring JpaRepository 中查询 List<String> 类型的属性的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data JPA Repository Method Query 用like?
Spring JpaRepository 中的 %Like% 查询
springJdbc like模糊查询,Spring namedParameterJdbcTemplate like查询