我需要创建一个使用带有多个参数的JPA Criteria API的搜索方法.现在的问题是不是每个参数都是必需的.因此有些可能为null,并且它们不应包含在查询中.我已经用CriteriaBuilder尝试了这个,但我看不出如何让它工作.
使用Hibernate Criteria API,这非常简单.只需创建条件,然后添加限制.
Criteria criteria = session.createCriteria(someClass.class);
if(someClass.getName() != null) {
criteria.add(Restrictions.like("name", someClass.getName());
}
Run Code Online (Sandbox Code Playgroud)
我怎么能用JPA的Criteria API实现同样的目标?
我JpaSpecificationExecutor用于创建自定义查询.如何为以下SQL创建规范?
select * from employee e, address a where e.id=23415 and e.name="Deepak" and a.city="Leeds";
Run Code Online (Sandbox Code Playgroud)
Java类:
public static Specification<Employee> searchEmployee(final Map<String,String> myMap) {
return new Specification<Employee>(){
@Override
public Predicate toPredicate(Root<Employee> root, CriteriaQuery<?> query, CriteriaBuilder cb) {
//Need to query two tables Employee and Address
}
}
Run Code Online (Sandbox Code Playgroud)