Невозможно запустить именованный запрос для операции обновления с 2 или более заданными параметрами - PullRequest
1 голос
/ 03 ноября 2011
<query name="account.updateUpdate">
        <![CDATA[update com.xyz.Account  set Level = :level,lastUpdationDate = :lastUpdationDate where id = :accountId]]>

</query>

Исключение:

Причина: org.hibernate.QueryException: установлены не все именованные параметры: [level, accountId, lastUpdationDate] [update com.xyz.Account set Level=: level, lastUpdationDate =: lastUpdationDate где id =: accountId

]
    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)

Я пытаюсь выполнить этот запрос, но я получаю выше исключения, и я попытался это, удалив параметр commain set изименованный запрос типа

<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());

1 Ответ

0 голосов
/ 03 ноября 2011

Ваш параметр называется lastUpdationDate, и вы пытаетесь установить его с помощью lastUpdateDate. Исправь это. Во втором запросе вы пропустите запятую.

Но в любом случае - как правило, вы не должны делать обновления с запросами. Просто получите ваш объект, используйте установщики POJO для установки новых значений и сохраните его. Если вы настаиваете, вы можете использовать @org.hibernate.annotations.Entity(dynamicUpdate=true) только для обновления измененных полей (в противном случае сгенерированный запрос будет включать все поля).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...