2

我想Persons使用 HibernateTemplate 更新数据库表中的特定字段。我正在尝试这样做,但这不起作用。

public void  updateDate(int Id,Date receivedDate) {
      Id = 10;
      receivedDate = 2012-11-12;
      String queryString = "update Persons set recievedDate=? where Id=? ";
      getHibernateTemplate().update(queryString, new Object[] { Id, receivedDate });
}

运行此查询时出现异常“UnkownEntity”。我可以使用 HibernateTemplate 来更新特定字段吗?是否有其他替代方法可以进行特定字段更新?

4

4 回答 4

3

update方法 ingetHibernateTemplate不允许执行 hql 查询。它只允许休眠实体对象。

见链接hibernate模板更新方法

在您的情况下,Hibernate 尝试将其解析update Persons set recievedDate=? where Id=?为一个实体。

解决方案:

Query q = s.createQuery("update Persons set recievedDate=:recievedDate where Id=:Id");
q.setString("recievedDate", "some date");
q.setString("Id", "54");
q.executeUpdate();

希望它清楚。

于 2012-11-14T18:25:41.573 回答
0

您必须在会话工厂配置中列出您的类。

于 2012-11-14T07:24:01.727 回答
0

我假设您在 HQL 中名为 Person 的实体必须使用 java 类名,而不是 db 表名

于 2012-11-14T07:41:04.910 回答
-2

如果使用 HibernateTemplate,这是我的解决方案。

// EntityName is the table to be updated

EntityName entity =  hibernateTemplate.find("from EntityName where id=?" , id);

//set the value which has to be updated

entity.setValue(yourNewValue);

hibernateTemplate.SaveOrUpdate(entity);  

// above updated the existing Entity table without duplicates
于 2015-08-20T06:40:47.057 回答