我有一个父表和一个子表,它们从子表中仅获得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();
可以同时转换为小写或大写并进行相等性检查。在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();