george
george

Reputation:

How to put 'null' into column using HQL?

How to build valid HQL string, which is equivalent to

UPDATE table SET field = null WHERE ....

Upvotes: 8

Views: 15927

Answers (2)

Zoidberg
Zoidberg

Reputation: 10323

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.

Upvotes: 0

ChssPly76
ChssPly76

Reputation: 100706

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.

Upvotes: 4

Related Questions