[英]SQLGrammarException: No value specified for parameter 1 hibernate
[英]Hibernate No value specified for parameter
我有一個命名查詢,它檢索LIST的UgAcyearExamSchedule
,如下所示:
@NamedQuery(name="UgAcyearExamSchedule.getByDetail",
query="select u FROM UgAcyearExamSchedule u where
u.ugAcyearExamScheduleDetails=:ugDetails")
其中ugAcyearExamScheduleDetails
中定義UgAcyearExamSchedule
如下:
@OneToMany(mappedBy="ugAcyearExamSchedule")
private List<UgAcyearExamScheduleDetail> ugAcyearExamScheduleDetails;
當我嘗試為這些查詢設置參數時,如下所示:
Query query = em.createNamedQuery("UgAcyearExamSchedule.getByDetailAndDeptYear");
query.setParameter("ugDetails",details);
List<UgAcyearExamSchedule> examSChedules = (List<UgAcyearExamSchedule>) query.getResultList();
以下異常到達:
ERROR: No value specified for parameter
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
我不知道這些問題的主要原因,在此先感謝
您定義了一個名為“ UgAcyearExamSchedule.getByDetail
”的命名查詢,但是您正在調用名為“ UgAcyearExamSchedule.getByDetailAndDeptYear
”的命名查詢。 我建議您在另一個命名查詢(您尚未發布)上有一個額外的參數(deptYear?),因此它會抱怨這個額外的參數。
同樣,您不能真正在JPQL中使用“ collectionField =:collectionParam”。 檢查元素的“ MEMBER OF”更為方便。
我相信您沒有正確使用命名查詢。 我注意到您使用了createNamedQuery
方法,但是您的命名查詢已經存在; 您需要調用它。
我想您的em
代表EntityManager或類似名稱,因此,如果您使用Hibernate Session Factory實例進行查詢,則應嘗試使用getNamedQuery
代替:
Query query = session.getNamedQuery("UgAcyearExamSchedule.getByDetailAndDeptYear")
.setParameter("ugDetails",details);
確保您的details
變量實際上設置為某物。 另外,請確保您正確使用了Hibernate Session。
一些鏈接可能會幫助您:)
http://www.mkyong.com/hibernate/hibernate-parameter-binding-examples/
http://www.mkyong.com/hibernate/hibernate-named-query-examples/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.