我正在使用JPA查询名称约定来查询数据库。它确实提供了一种很好的查询方式,并为我节省了很多精力。下面是我用来按名称和性别查询的一个例子。
public interface SysUserRepository extends CrudRepository<SysUserEntity, Integer>{
SysUserEntity findByUserNameAndSex(String name, String sex);
}
它工作正常,但我不知道它是否支持通配符查询。例如,我想搜索姓名以&#34; Z&#34;开头的所有男人。如何使用上述方法为我执行查询?所以我想写下面的内容来做查询:
findByUserNameAndSex("Z*", "male")
JPA是否支持这种查询?
答案 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);