如何使用HQL将'null'放入列中?

时间:2009-08-10 23:12:21

标签: java hibernate hql

如何构建有效的HQL字符串,相当于

UPDATE表SET field = null WHERE ....

2 个答案:

答案 0 :(得分:2)

您的意思是批量HQL更新吗?试试这个

UPDATE myEntity e SET e.myProperty = null WHERE ...

您还可以使用上述

的参数化版本
UPDATE myEntity e SET e.myProperty = :param WHERE ...

在您的代码中:

int updatedEntities = session.createQuery(updateQueryHQL)
  .setString( "param", myValue ) // or .setString( "param", null )
  .executeUpdate();

有关详细信息,请参阅documentation

如果您没有进行批量更新,则应将属性设置为NULL并正常保留实体。

答案 1 :(得分:0)

为什么您的更新语句需要在HQL中完成?您是否将此表映射到系统中的实体?如果这样做,那么您可以简单地将映射到该列的属性设置为null,并在该实体上运行保存。例如

myObject.setMyProperty(空); 。了getSessionFactory()的getCurrentSession()保存(myObject的);

这应该适合你,但你必须有一个实体映射到相关的表。