如何构建有效的HQL字符串,相当于
UPDATE表SET field = null WHERE ....
答案 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的);
这应该适合你,但你必须有一个实体映射到相关的表。