簡體   English   中英

找不到命名參數

[英]Could not locate named parameter

我有以下查詢:

<named-native-query name="GET_Objects_REPORT">
    <query>
        <![CDATA[
               SELECT *
               FROM KAP.VC
               JOIN KAP.V ON VC.ID = V.ID
               JOIN KAP.VI ON VC.ID = VI.ID AND (VI."DATETIME" BETWEEN :startDate and :endDate)
         ]]>
    </query>
</named-native-query>               

執行查詢時,出現以下異常:

java.lang.IllegalArgumentException:org.hibernate.QueryParameterException:找不到命名參數[startDate]

public List<Object[]> getAllObjects(final Date startDate, final Date endDate) {
    final Query q = em.createNativeQuery("GET_Objects_REPORT");
    q.setParameter("startDate", startDate);
    q.setParameter("endDate", endDate);

    return q.getResultList();
}

您能告訴我我的查詢是什么問題嗎?

您的SQL查詢是GET_Objects_REPORT (無效的SQL),沒有startDate參數。

您需要使用em.createNamedQuery("GET_Objects_REPORT")

這不會回答以下問題:為什么在XML文件中找不到查詢(orm.xml?根據其模式是否有效?),但是您可以將命名查詢(無論是否是本機)放入實體中它們屬於(不是orm.xml )而不是orm.xmlpersistence.xml

@Entity
@NamedNativeQueries({
@NamedNativeQuery(name="Foobar", query = "...")
})
public class MyEntity {

}

(順便說一句,對不起我以前的(已刪除)答案。這沒有針對性,而且是錯誤的)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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