我有Schedule和Agent之间的多对多关系(通过属性assignedAgent)。Hibernate + JPA Criteria API在多对多关系查询中没有设置参数?
我想找到包含我提供的任何代理的计划。我试图做到这一点:
List<Agent> agentsToMatch = // ... I want schedules with any of these agents
CriteriaBuilder cb = session.getCriteriaBuilder();
CriteriaQuery<Schedule> query = cb.createQuery(Schedule.class);
Root<Schedule> schedule = query.from(Schedule.class);
query.where(schedule.get(Schedule_.assignedAgents).in(agentsToMatch));
使用Hibernate 5.2.7,在阵列中提供2剂,当我得到以下查询:
select generatedAlias0 from Schedule as generatedAlias0 where generatedAlias0.assignedAgents in (:param0, :param1)
然而,参数似乎没有进行设置,如我得到以下例外:
WARN [qtp1782580546-44] o.h.engine.jdbc.spi.SqlExceptionHelper:129 - SQL Error: 0, SQLState: 22023
ERROR [qtp1782580546-44] o.h.engine.jdbc.spi.SqlExceptionHelper:131 - No value specified for parameter 1.
javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not extract ResultSet
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:147)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)
at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1419)
at org.hibernate.Query.getResultList(Query.java:427)
at org.hibernate.query.criteria.internal.compile.CriteriaQueryTypeQueryAdapter.getResultList(CriteriaQueryTypeQueryAdapter.java:72)
任何想法,我可能会出错?
谢谢,但不知何故,我仍然有同样的问题:我在查询上使用session.createQuery(查询)上的.setParameter;但hibernate似乎没有设置值:“没有为参数1指定值”。 –
user2037710
请发送您的完整查询,请 – fg78nc
CriteriaBuilder cb = session.getCriteriaBuilder(); \t \t CriteriaQuery query = cb.createQuery(Schedule.class); \t \t 根 schedule = query.from(Schedule.class); (schedule.get(Schedule_.assignedAgents).in(cb.parameter(List.class,“agentsToMatch”))); query.distinct(true); \t \t 查询 q = session.createQuery(query); q.setParameter(“agentsToMatch”,this.agentsToMatch); System.out.println(q.getResultList()); –
user2037710