%like%在spring jparepository中查询list< string>类型的属性

cld4siwp  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(369)

我想编写一个查询,在实体中定义为列表的字段中查找包含特定字符串的记录。
这是我的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而不是string。
那我怎么解决呢?

mbyulnm0

mbyulnm01#

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

相关问题