我是Hibernate的新手。
当我尝试反布尔
时 @Query(value = "update ToDo t set t.done= (abs(t.done -1)) where t.id=:id")
public void toogleDone(@Param("id") long id);
我有这个例外:
无法在org.hibernate.type.descriptor.sql.BigIntTypeDescriptor的org.hibernate.type.descriptor.java.LongTypeDescriptor.unwrap(LongTypeDescriptor.java:36)中将java.lang.Integer强制转换为java.lang.Long。 $ 1.doBind(BigIntTypeDescriptor.java:57)......[2014-01-20 16:20:38] java.lang.ClassCastException:
当我尝试这个查询时:
`@Query(value =“update ToDo t set t.done =(NOT t.done)其中t.id =:id”)
public void toogleDone(@Param("id") long id);`
我有例外:
[2014-01-20 16:28:58]意外的AST节点:没有[更新org.teamdev.todo.model.domain.ToT设置t.done =(NOT t.done)其中t.id = :ID]
你有没有想过在HQL中反布尔值?
答案 0 :(得分:0)
您只想切换位值?您可以使用CASE完成此操作。
update ToDo t set t.done = (case when t.done = 1 then 0 else 1 end) where t.id=:id
答案 1 :(得分:0)
使用set t.done = (t.done=false)
,因此查询将是:
update ToDo t set t.done = (t.done=false) where t.id=:id