【发布时间】:2016-12-26 18:14:53
【问题描述】:
祝大家圣诞快乐,新年快乐。
我目前正在从事我大学的一个 JPA 项目。我在使用 Query 时遇到问题,尤其是在接收大量参数的 @Service 类上的 Method。
首先,我试图让查询使用两个参数。
方法如下。
@Override
@Transactional ( readOnly = true )
public List<Candidate> obtainCandidatesOps(String name, String firstName,
String secondName, String passport, CandidateType candidateType,
Area area, Country country) {
List<Candidate> resultList = new ArrayList<Candidate>();
CriteriaBuilder cb = em.getCriteriaBuilder();
CriteriaQuery<Candidate> cq = cb.createQuery(Candidate.class);
Root<Candidate> r = cq.from(Candidate.class);
cq.where(cb.and(cb.equal(r.get("name"), cb.parameter(String.class, "name")),cb.equal(r.get("firstLastName"), cb.parameter(String.class, "firstName"))));
cq.select(r);
resultList = em.createQuery(cq).getResultList();
return resultList;
}
当我尝试执行此查询时,我收到此错误:
警告:#{searchBean.fillCandidatesOps}:java.lang.IllegalArgumentException:org.hibernate.QueryException:并非所有命名参数都已设置:[firstName, name] [select generatedAlias0 from Candidate as generatedAlias0 where ( generatedAlias0.name= :name ) 和 ( generatedAlias0.firstLastName=:firstName )]
错误/问题在哪里?我已经研究了超过 5 天,我真的落后于系统的开发,我真的需要一些提示:)
我已阅读此主题,但没有找到解决问题的方法。
How to solve "org.hibernate.QueryException: Not all named parameters have been set" error?
谢谢大家。
【问题讨论】:
标签: jpa