Hibernate: MappingException при выполнении getHibernateTemplate(). Update query

116
14

Есть причина исключения:

org.hibernate.MappingException: Unknown entity: UserDetails set confirmed=true where username=? and confirmationCode=?

когда этот код выполнен:

public void confirmUser(String username,String confirmationCode){
getHibernateTemplate().update("UserDetails set confirmed=true where username=? and confirmationCode=?",new Object[]{username,confirmationCode});
}

РЕДАКТИРОВАТЬ

This query works OK:
public String getUserMail(String username) {
return (String) DataAccessUtils.uniqueResult(getHibernateTemplate().find(
"select mail from UserDetails where username=?", new Object[] { username }));
}

Это значит, что мой hbm.xml должен быть в порядке:

<hibernate-mapping>
<class name="model.UserDetails" table="users">
<id name="id">
<generator class="increment"/>
</id>
<property name="username" column="username"/>
<property name="password" column="password"/>
<property name="enabled" column="enabled"/>
<property name="mail" column="mail"/>
<property name="city" column="city"/>
<property name="confirmed" column="confirmed"/>
<property name="confirmationCode" column="confirmation_code"/>

<set name="authorities" cascade="all" inverse="true">
<key column="id" not-null="true"/>
<one-to-many class="model.Authority"/>
</set>

</class>
</hibernate-mapping>

Вопрос заключается в том, как выполнить метод update с набором параметров, потому что getHibernateTemplate().update предполагает передать Object методу, но не SQL запрос.

спросил(а) 2011-12-14T19:29:00+04:00 8 лет, 10 месяцев назад
1
Решение
81

Чтобы выполнить обновление с помощью Hibernate ORM, я использовал такую конструкцию:

SessionFactory sf = getHibernateTemplate().getSessionFactory();
Session s = sf.openSession();
Query q = s.createQuery("UserDetails set confirmed=true
where username:username and confirmationCode=:confirmationCode");
q.setString("username", username);
q.setString("confirmationCode", confirmationCode);
q.executeUpdate();

Это было сделано из-за getHibernateTemplate().update не разрешает именованные параметры.
Должен быть объект передан.

ответил(а) 2011-12-15T12:49:00+04:00 8 лет, 10 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема