Thursday, 15 August 2013

sql - JPA Query for toggling a boolean in a UPDATE -



sql - JPA Query for toggling a boolean in a UPDATE -

sql version works okay , can toggle boolean called bar ...

mysql> update foo set bar = ! bar id in (1, 7, 13); query ok, 3 rows affected (0.02 sec)

is there easy jpa query equivalent, tried

final set<integer> ids; final query query = em.createquery("update " + foo.class.getname() + " set bar= !bar" + " a.id in :ids"); query.setparameter("ids", ids); query.executeupdate();

the above gives org.hibernate.queryexception.

in entity :

@column(columndefinition = "integer", nullable = false) private boolean bar;

any ideas on jpa syntax ?

that can done case expression:

update foo set a.bar = case a.bar when true false else true end a.id in :ids

for nullable boolean bit more needed:

update foo set a.bar = case a.bar when true false when false true else a.bar end a.id in :ids

sql jpa jpql

No comments:

Post a Comment