с использованием mysql и springboot jpa,
Я пытаюсь реализовать в предложении, используя JPA. Когда список параметров передается в спецификацию, получайте ожидаемые результаты при написании запроса на управление, как показано ниже.employeeId - это строковый столбец с заглавными и строчными буквами.хотя ручной запрос работает, но необходимо реализовать спецификацию.
Ручной запрос:
SELECT emp
FROM EmployeeEntitiy emp
WHERE LOWER(emp.employeeIdParam) IN(
SELECT LOWER(empRel.destinationssid)
FROM EmployeeRelationEntity empRel WHERE ((LOWER(empRel.employeeId)=:employeeIdParam
OR UPPER(empRel.employeeId)=:employeeIdParam)
OR empRel.employeeId=:employeeIdParam)
как я могу проверить данные столбца как заглавными, так и маленькими, как ручной запрос в toPredicate переопределенный метод.JPA Спецификация:
private class ParentChildCISpecification implements Specification<EmployeeEntitiy> {
List<String> employeeIdParamsList = new ArrayList<String>();
public ParentChildCISpecification(List<String> employeeIdParamsList) {
this.employeeIdParamsList = employeeIdParamsList;
}
@Override
public Predicate toPredicate(Root<EmployeeEntitiy> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
return root.get("employeeId").in(employeeIdParamsList);
}
}