如何使用Spring JPA查询名称约定来查询通配符

时间:2016-07-25 09:27:28

标签: java spring spring-data spring-data-jpa

我正在使用JPA查询名称约定来查询数据库。它确实提供了一种很好的查询方式,并为我节省了很多精力。下面是我用来按名称和性别查询的一个例子。

public interface SysUserRepository extends CrudRepository<SysUserEntity, Integer>{
   SysUserEntity findByUserNameAndSex(String name, String sex);
}

它工作正常,但我不知道它是否支持通配符查询。例如,我想搜索姓名以&#34; Z&#34;开头的所有男人。如何使用上述方法为我执行查询?所以我想写下面的内容来做查询:

  findByUserNameAndSex("Z*", "male")

JPA是否支持这种查询?

2 个答案:

答案 0 :(得分:2)

参考this documentation,您可以使用&#34; StartingWith&#34;:

SysUserEntity findByNameStartingWithAndSex(String name, String sex);

这对应于:

@Query("select su from sysuser su where su.name like ?1% and su.sex = ?2")

答案 1 :(得分:0)

您可以像这样创建一个查询:

Query query = em.createQuery("SELECT c FROM table c WHERE c.sex = :sex AND c.name LIKE CONCAT(:name, '%')");
query.setParameter('sex', sex);
query.setParameter('name', name);