簡體   English   中英

休眠沒有為參數指定值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM