如何在JpaRepository Spring中找到多个

时间:2017-12-13 04:02:46

标签: spring spring-boot spring-data-jpa

我想在春天使用JpaRepository进行查询。我找不到路。

如果在原生查询中我需要类似

的内容
select * from staff where ( 
name like '%param1%' OR
address like '%param1%' OR
staffNo like '%param1%')
order by name limit 10 offset 0

除了'like'函数之外,我已经成功将其转换为JpaRepository以获取限制和偏移量。我目前的代码:

List<Staff> findByIdNotNull(Pageable pageable);

如何在JpaRepo中插入'multiple like',我尝试使用包含但即使对于一列也可以使用

List<Staff> findByNameContaining(String name, Pageable pageable);

2 个答案:

答案 0 :(得分:2)

你快到了。使用多个或类似的查询:

List<Staff> findByNameContainingOrAddressContainingOrStaffNoContaining(
  String name, String address, int staffNo, Pageable pageable);

这样,OR个查询的like条件可以name。确保您拥有名为addressstaffNohttp://localhost:80/magento的实体属性。

答案 1 :(得分:0)

您可以使用实体管理器

执行此操作
Query query = em.createQuery("select s from staff s where ( 
s.name like :param1 OR
s.address like :param2 OR
s.staffNo like :param3 )
order by name limit 10 of`enter code here`fset 0");
                query.setParameter("param1","%"+param1+"%");
                query.setParameter("param2","%"+param2+"%");
                 query.setParameter("param3","%"+param3+"%");

                 List<staff> l=query.getResultList();

为表格提供别名。 使用setParameter(name,value)定义设置参数。 使用人员列表获取resultList。