簡體   English   中英

JPA /休眠查詢無法識別命名參數

[英]JPA/Hibernate Query do not recognize named parameters

此方法不適用於參數

    @Override
public List<T> findBy2Params(Class c, String param1, String value1, String param2, String value2) {

    Query q = em.createQuery("select o from :class o where o.:param1 =   ':value1' "
            + " and o.:param2 = 'value2' ");
    q.setParameter("class", c.getName());
    q.setParameter("param1", param1);
    q.setParameter("value1", value1);
    q.setParameter("param2", param2);
    q.setParameter("value2", value2);
    return q.getResultList();
}

在“:”上拋出錯誤;不將其視為參數

java.lang.IllegalArgumentException:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌::第1行第15列[從:class o中選擇o,其中o.:param1 =':value1'和o.:param2 ='value2']

您的查詢將無法進行,因為您無法像這樣綁定表或列名稱。

表名稱和相關的列需要在執行計划生效時知道,它發生在參數綁定之前。

唯一的方法是傳遞給HQL 之前替換這些值,或者使用更動態的方法(例如,使用Criteria API)在運行時構建查詢。

暫無
暫無

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

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