你能帮我如何将下面的代码转换为使用标准构build器的“in”运算符? 我需要通过使用“in”使用列表/数组的用户名进行过滤。 我也尝试使用JPA CriteriaBuilder进行search – “in”方法但是找不到好的结果。 所以,如果你能给我这个主题的参考url,我真的很感激。 谢谢。 这是我的代码: //usersList is a list of User that I need to put inside IN operator CriteriaBuilder builder = getJpaTemplate().getEntityManagerFactory().getCriteriaBuilder(); CriteriaQuery<ScheduleRequest> criteria = builder.createQuery(ScheduleRequest.class); Root<ScheduleRequest> scheduleRequest = criteria.from(ScheduleRequest.class); criteria = criteria.select(scheduleRequest); List<Predicate> params = new ArrayList<Predicate>(); List<ParameterExpression<String>> usersIdsParamList = new ArrayList<ParameterExpression<String>>(); for (int i = 0; i < […]
我试图在我的新项目中使用Criteria API: public List<Employee> findEmps(String name) { CriteriaBuilder cb = em.getCriteriaBuilder(); CriteriaQuery<Employee> c = cb.createQuery(Employee.class); Root<Employee> emp = c.from(Employee.class); c.select(emp); c.distinct(emp); List<Predicate> criteria = new ArrayList<Predicate>(); if (name != null) { ParameterExpression<String> p = cb.parameter(String.class, "name"); criteria.add(cb.equal(emp.get("name"), p)); } /* … */ if (criteria.size() == 0) { throw new RuntimeException("no criteria"); } else if (criteria.size() […]
我的Java应用程序正在使用JPA进行对象持久化。 业务领域非常简单(只有三个类是持久的,每个属性有3-5个)。 查询也很简单。 问题是我应该使用哪种方法:JPQL还是Criteria API?
我只想select特定的列(例如SELECT a FROM b )。 我有一个通用的DAO,我想到的是: public List<T> getAll(boolean idAndVersionOnly) { CriteriaBuilder builder = manager.getCriteriaBuilder(); CriteriaQuery<T> criteria = builder.createQuery(entityClazz); Root<T> root = criteria.from(entityClazz); if (idAndVersionOnly) { criteria.select(root.get("ID").get("VERSION")); // HERE IS ERROR } else { criteria.select(root); } return manager.createQuery(criteria).getResultList(); } 错误是: The method select(Selection<? extends T>) in the type CriteriaQuery<T> is not applicable for the arguments […]
我试图用子查询和一个INexpression式多次写查询语句。 但我从来没有成功。 我总是得到exception,“附近关键字”IN“的语法错误”,查询语句是这样构build的, SELECT t0.ID, t0.NAME FROM EMPLOYEE t0 WHERE IN (SELECT ? FROM PROJECT t2, EMPLOYEE t1 WHERE ((t2.NAME = ?) AND (t1.ID = t2.project))) “IN”输之前我知道这个词。 你有没有写过这样的查询? 任何build议?