【问题标题】:Update with HQL error使用 HQL 错误更新
【发布时间】:2013-08-06 07:31:14
【问题描述】:

大家好,我有以下代码:

tx = session.beginTransaction();
        Query query = session.createQuery("UPDATE com.nisid.entities.Payment set  amount=:amount,paymentMethod=:method,paymentExpire=:expireDate"
                + "Where paymentId=:payid,actionId=:actionid");
        query.setParameter("amount", amount);
        query.setParameter("method", method);
        query.setParameter("expireDate", expireDate);
        query.setParameter("payid", projectId);
        query.setParameter("actionid", actionId);
        int resutl=query.executeUpdate();

尝试使用 HQL 进行更新,但出现错误:galArgumentException: node to traverse cannot be null!

我在数据库中的表名为 Payment,它有一个 COMPOSITE KEY (projectId,actionId) 你能帮我进一步吗???

这个概念是我有一个 JSP 页面,它从数据库中检索并显示结果,从项目表、付款表和操作表中检索信息。 Project 与 Action 有多对多的关系,我使用 Payment Table 作为中间表,其中包含另一个表的 2 FK。

【问题讨论】:

    标签: sql-update hql


    【解决方案1】:

    where 之前缺少空格,将where 之后的, 替换为and

    Query query = session.createQuery("UPDATE com.nisid.entities.Payment set  amount=:amount,paymentMethod=:method,paymentExpire=:expireDate"
                    + " Where paymentId=:payid and actionId=:actionid");
    

    【讨论】:

    • 嗨,我现在收到以下错误:严重:类中的 IllegalArgumentException:com.nisid.entities.PaymentID,属性的 getter 方法:myproject 严重:org.hibernate.PropertyAccessException:调用 getter 时发生 IllegalArgumentException com.nisid.entities.PaymentID.myproject
    • 我的目的是更新 3 个表(付款表、项目表和操作表)我与项目表和操作表有多对多关系,并且我使用付款表作为中间表。是否可以如上所述进行更新?
    • 你的对象中有getter和setter吗?您可以发布此代码(尤其是对于 com.nisid.entities.PaymentID.myproject)吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    相关资源
    最近更新 更多