JPA查询未执行,引发异常
祝大家圣诞快乐,新年快乐 我目前正在我大学的一个JPA项目中工作。我在查询方面遇到了问题,特别是@Service类上接收大量参数的方法 首先,我只是想让查询使用两个参数 这里是方法JPA查询未执行,引发异常,jpa,Jpa,祝大家圣诞快乐,新年快乐 我目前正在我大学的一个JPA项目中工作。我在查询方面遇到了问题,特别是@Service类上接收大量参数的方法 首先,我只是想让查询使用两个参数 这里是方法 @Override @Transactional ( readOnly = true ) public List<Candidate> obtainCandidatesOps(String name, String firstName, String secondName, String
@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][从候选项中选择GenerateDias0作为GenerateDias0,其中GenerateDias0.name=:name和GenerateDias0.firstLastName=:firstName]
错误/问题在哪里?我已经讨论了5天多,我真的支持系统的开发,我真的需要一些提示:
我读过这些主题,但没有找到解决问题的方法
谢谢大家。由于这两个链接的线程告诉您足够清楚,所以不知道为什么您已经查看了它们5天,却没有注意到这一点,因此您需要设置在该查询中定义的参数值
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);
Query query = em.createQuery(cq);
query.setParameter("name", name);
query.setParameter("firstName", firstName);
resultList = query.getResultList();
嘿,尼尔,谢谢你的回复。我确实尝试过这个,但是我没有得到任何结果,我的意思是,列表返回空值。当然,我确实使用数据库中的名称尝试了这个查询,以查看列表是否返回空值。如果这样做了,那么您可能应该在问题中这样说,因为这回答了问题,您得到了一个关于缺少参数的异常。然后你调试它。。。通过查看所选JPA提供程序调用的SQL。