【问题标题】:how to write jpql query with like operator如何用like运算符编写jpql查询
【发布时间】:2021-05-27 18:25:28
【问题描述】:

如何在java类的JPQL中编写下面的sql查询

select e.emp_id, e.emp_name
from emp e 
left outer join dept on e.dept_id = d.dept_id and upper(d.dept_name) like upper('%dev%') 

我在下面尝试过它对我不起作用。我需要在like关键字之后如何用两个百分位和参数名称编写

@Query(value = "select e.emp_id,e.emp_name from emp e left outer join dept on e.dept_id= d.dept_id and upper(d.dept_name)  like upper(%:deptName%), nativeQuery = true)
List<Employee> searchAllEmployees(@Param("deptName")String deptName);

【问题讨论】:

    标签: hibernate jpa spring-data-jpa jpql


    【解决方案1】:

    假设您有以下Employee 实体:

    @Entity
    public class Employee
    {
       @Id
       @Column(name = "emp_id")
       Long id;
    
       @Column(name = "emp_name")
       String name;
    
       @ManyToOne
       @JoinColumn(name = "dept_id")
       Department department;
    }
    
    @Entity
    public class Department
    {
       @Id
       @Column(name = "dept_id")
       Long id;
    
       @Column(name = "dept_name")
       String name;
    }
    

    你可以写如下jpql:

    @Query("select e from Employee e left join e.department d where upper(d.name) like '%' || upper(:deptName ) || '%'")
    List<Employee> searchAllEmployees(@Param("deptName")String deptName);
    

    另请参阅休眠文档的this 部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-20
      • 2012-05-31
      • 1970-01-01
      • 1970-01-01
      • 2021-02-20
      • 1970-01-01
      • 2012-05-02
      • 1970-01-01
      相关资源
      最近更新 更多