BKa*_*aun 4 java hibernate jpa
根据这个链接
谓词lcSurnameLikeSearchPattern = criteriaBuilder.like(criteriaBuilder.下(Person_.surname),是searchPattern.toLowerCase());
这看起来像Hibernate会生成一个类似的SQL
LOWER(PERSON.SURNAME) LIKE 'searchPattern'
Run Code Online (Sandbox Code Playgroud)
使用toLowerCase提供的任何实现,在Java中降低searchPattern的位置.而查询LOWER将使用Oracle实现.对于ASCII字符,我猜测事情很简单,但国际UTF字符会不会有差异?
如何在查询中让JPA降低LIKE的两个操作数?所以生成的查询看起来像
LOWER(PERSON.SURNAME) LIKE LOWER('searchPattern')
Run Code Online (Sandbox Code Playgroud)
您可以使用两个表达式作为like方法参数并将literalString包装到Expression中:
Predicate lcSurnameLikeSearchPattern = criteriaBuilder.like(
criteriaBuilder.lower(Person_.surname),
criteriaBuilder.lower(criteriaBuilder.literal(searchPattern))
);
Run Code Online (Sandbox Code Playgroud)
我Person_.surname从你的例子中省略了定义.