如何将大写字母与JPA QueryBuilder进行比较?
SQL:
SELECT * FROM PERSON WHERE UPPER(name) = ?
我添加:searchName.toUpperCase()
答案 0 :(得分:1)
这是一个解决方案:
public List<Person> getPersonsByUpperName(String searchName) {
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Person> cq = cb.createQuery(Person.class);
Root<Person> person= cq.from(Person.class);
Path<String> name = person.get("name"); //table column
cq.select(person);
cq.where(cb.equal(cb.upper(name), cb.parameter(String.class, "nameUpper")));
TypedQuery<Person> q = em.createQuery(cq);
q.setParameter("nameUpper", searchName.toUpperCase());;
return q.getResultList();
}
这适用于任何输入字符串(Dimitri,dimitri等),因为大写转换是在方法内执行的:
cb.upper(name)
searchName.toUpperCase()
我希望它有所帮助。