How to put 'null' into column using HQL?

2019-02-22 00:30发布

How to build valid HQL string, which is equivalent to

UPDATE table SET field = null WHERE ....

2条回答
Explosion°爆炸
2楼-- · 2019-02-22 00:51

Do you mean bulk HQL update? Try this

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

You can also use a parameterized version of the above

UPDATE myEntity e SET e.myProperty = :param WHERE ...

In your code:

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

See documentation for details.

If you're not doing bulk updates, you should just set your property to NULL and persist the entity normally.

查看更多
女痞
3楼-- · 2019-02-22 01:10

Why does your update statement need to be done in HQL? Do you have this table mapped to an entity in the system? If you do, then you can simply set the property that maps to that column to null, and run a save on that entity. eg.

myObject.setMyProperty(null); getSessionFactory().getCurrentSession().save(myObject);

That should work for you, but you gotta have an entity mapped to the table in question.

查看更多
登录 后发表回答