Java 无法使用2个或多个设置参数为更新操作运行命名查询

Java 无法使用2个或多个设置参数为更新操作运行命名查询,java,hibernate,spring,jakarta-ee,Java,Hibernate,Spring,Jakarta Ee,我正在尝试执行这个查询,但我遇到了上述异常,并且我已经通过删除命名查询的commainset参数进行了尝试,如 ] at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:315) at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:299) at org.hib

我正在尝试执行这个查询,但我遇到了上述异常,并且我已经通过删除命名查询的commainset参数进行了尝试,如

]
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:315)
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:299)
    at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:113)
    at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1150)
    at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1)

您的参数名为
lastUpdateDate
,您正试图使用
lastUpdateDate
对其进行设置。解决这个问题。在第二个查询中,缺少一个逗号


但是无论如何,一般来说,你不应该用查询来更新。只需获取对象,使用POJO的setter设置新值,并将其持久化。如果您坚持,您可以使用
@org.hibernate.annotations.Entity(dynamicUpdate=true)
仅更新更改的字段(否则生成的查询将包括所有字段)。

您可能需要从
query.setString(“level”,level)中删除空格太+命名约定问题,以及使用包装器而不是原语等…)但我们的应用程序中没有使用注释。这是因为bulkUpdate在本例中不起作用,所以我尝试使用executeUpdate()它开始起作用。我想,使用正确的参数名?但是,为什么要使用查询进行更新呢?
]
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:315)
    at org.hibernate.impl.AbstractQueryImpl.verifyParameters(AbstractQueryImpl.java:299)
    at org.hibernate.impl.QueryImpl.executeUpdate(QueryImpl.java:113)
    at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1150)
    at org.springframework.orm.hibernate3.HibernateTemplate$39.doInHibernate(HibernateTemplate.java:1)
<query name="account.updateUpdate">
            <![CDATA[update com.xyz.Account  set Level = :level lastUpdationDate = :lastUpdationDate where id = :accountId]]>

    </query>
Query query = getHibernateTemplate().getSessionFactory().getCurrentSession().getNamedQuery("account.updateStatus");
        query.setString("level ", level );
        query.setTimestamp("lastUpdationDate", new Timestamp(new Date().getTime()));
        query.setString("accountId", accountId);
        Integer count = getHibernateTemplate().bulkUpdate(query.getQueryString());