使用HQL从子表中获取记录时不区分大小写的问题

问题描述 投票:0回答:1

我有一个父表和一个子表,它们从子表中仅获得1条记录,但在敏感匹配记录中却没有获得大小写,该记录是混合字符串,并期望它应返回2条记录。

下面是相同的代码。

//父表@实体@Table(name =“ employee”)公共类Employee实现Serializable {

@Id
@Column(name = "employeeID")
private String employeeID;

@Column(name = "name_first")
private String nameFirst;

@Column(name = "name_last")
private String nameLast;

}

//Child Table
@Entity
@Table(name = "employee_salary")
public class EmployeeSalary implements Serializable {

@EmbeddedId
private EmployeeSalaryPK employeeSalaryPKCompositeKey ;

@Column(name = "salaryBracket")
private String salaryBracket;

}

@Embeddable
public class EmployeeSalaryPK implements Serializable {

@Column(name="employeeID")
private String employeeID;

@Column(name="salary")
private String salary;

}

在employee_salary表中,我有以下两条记录,但是使用HQL提取该记录时,只有一条记录与实际匹配匹配,但是不区分大小写的记录不会出现。

员工记录:-美国广播公司John Kramer

employee_salary表记录:-

ABC 100900aBc 76770

我正在使用简单的hql查询(请参见下面的代码),但是当我想同时获取两条记录(因为employeeID为abc时,仅获得第一条记录。

String hqlQuery =“ FROM” + Employee.class.getName()+“ E WHERE E.employeeID =:EMPLOYEEID”;会话会话= entityManager.unwrap(Session.class);列出responseList = session.createQuery(hqlQuery).setParameter(“ EMPLOYEEID”,“ ABC”)。list();

mysql hibernate jpa hql case-insensitive
1个回答
0
投票

可以同时转换为小写或大写并进行相等性检查。在HQL中,可以使用lower()upper()运算符进行操作。假设您使用的是lower,那么更新后的查询将是

String hqlQuery = " FROM " + Employee.class.getName() + " E WHERE lower(E.employeeID)= :EMPLOYEEID"; 
Session session = entityManager.unwrap(Session.class);
String empId = "ABC";
List responseList = session.createQuery(hqlQuery).setParameter("EMPLOYEEID", empId.toLowerCase()).list();
© www.soinside.com 2019 - 2024. All rights reserved.