Hibernate没有为参数指定值
我有一个命名查询,检索列表中的Hibernate没有为参数指定值,hibernate,jpa,jdbc,jpql,Hibernate,Jpa,Jdbc,Jpql,我有一个命名查询,检索列表中的UgAcyearExamScheduleinterms,如下所示: @NamedQuery(name="UgAcyearExamSchedule.getByDetail", query="select u FROM UgAcyearExamSchedule u where u.ugAcyearExamScheduleDetails=:ugDetails") @OneToMany(mappedBy="ugAcyearExamSchedule") private
UgAcyearExamSchedule
interms,如下所示:
@NamedQuery(name="UgAcyearExamSchedule.getByDetail",
query="select u FROM UgAcyearExamSchedule u where
u.ugAcyearExamScheduleDetails=:ugDetails")
@OneToMany(mappedBy="ugAcyearExamSchedule")
private List<UgAcyearExamScheduleDetail> ugAcyearExamScheduleDetails;
Query query = em.createNamedQuery("UgAcyearExamSchedule.getByDetailAndDeptYear");
query.setParameter("ugDetails",details);
List<UgAcyearExamSchedule> examSChedules = (List<UgAcyearExamSchedule>) query.getResultList();
其中,UgAcyearExamSchedule
中对UgAcyearExamSchedule详细信息的定义如下:
@NamedQuery(name="UgAcyearExamSchedule.getByDetail",
query="select u FROM UgAcyearExamSchedule u where
u.ugAcyearExamScheduleDetails=:ugDetails")
@OneToMany(mappedBy="ugAcyearExamSchedule")
private List<UgAcyearExamScheduleDetail> ugAcyearExamScheduleDetails;
Query query = em.createNamedQuery("UgAcyearExamSchedule.getByDetailAndDeptYear");
query.setParameter("ugDetails",details);
List<UgAcyearExamSchedule> examSChedules = (List<UgAcyearExamSchedule>) query.getResultList();
我不知道这些问题的主要原因,请提前感谢我相信您没有正确使用命名查询。我注意到您使用了
createNamedQuery
方法,但是您的命名查询已经存在;你需要给它打电话
我假设您的em
代表EntityManager或类似工具,因此,如果您使用Hibernate会话工厂实例进行查询,您应该尝试使用getNamedQuery
:
Query query = session.getNamedQuery("UgAcyearExamSchedule.getByDetailAndDeptYear")
.setParameter("ugDetails",details);
确保details
变量实际设置为某个值。还要确保正确使用Hibernate会话
一些可能对您有帮助的链接:)
您定义了一个名为“
UgAcyearExamSchedule.getByDetail
”的命名查询,但您正在调用名为“UgAcyearExamSchedule.getByDetailAndDeptYear
”的命名查询。我建议您在另一个命名查询(您还没有发布)上有一个额外的参数(deptYear?),因此它会抱怨额外的参数
此外,您不能在JPQL中真正使用“collectionField=:collectionParam”。检查元素的“成员”更方便。他使用的是JPA API(EntityManager)而不是Hibernate API(SessionFactory)。createNamedQuery是他应该使用的。这里有一个链接可以帮助你