【发布时间】:2014-02-21 14:50:40
【问题描述】:
您好,不明白 namedQuery 的问题
<query name="updtae.payment.paymentDate.by.txn_id">
<![CDATA[
update Payment p set p.paymentDate =:payDate WHERE p.txnId=:txnId]]>
</query>
遇到异常 HIbernate org.hibernate.HibernateException:命名查询中的错误
没有与我们实体名称相同的列 它在本地运行良好,但不要在生产服务器上运行
getSession().getNamedQuery("updtae.payment.paymentDate.by.txn_id").setTimestamp("payDate",paymentDate ).setString("txnId", txnId).executeUpdate();
这里是命名查询的调用。
【问题讨论】:
-
你如何在 Java 代码中调用你的命名查询?请发布更多代码。
-
在你发布的代码中——
getSession().getNamedQuery("updtae.payment.paymentDate.by.txn_id").setTimestamp("payDate",paymentDate ).setString("txnId", txnId).executeUpdate();——你拼错了更新 -
@hd1 更新时的拼写错误在 java 代码以及命名查询中也是如此。所以这不是问题。
-
对于这种事情,我更喜欢Hibernate的Criteria api,而不是HQL
-
使用 Criteria min 获取列表并更新循环中的每一行,这在性能方面是不正确的,它看起来像休眠版本问题。问题是我无法在生产服务中更改版本。所有这些在我的本地都可以正常工作
标签: java sql hibernate named-query