%喜欢% 查询在春季 Jpa存储库中为列表<String>类型的属性



我想写一个查询来查找字段中包含特定字符串的记录在我的实体中定义为列表。

这是我的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。

那么我该怎么解决呢?

在这种情况下,您可以使用本机查询而不是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);
.
.
.
}

相关内容

最新更新