使用HQL进行条件更新

时间:2017-02-13 12:58:05

标签: java hibernate hql

我尝试使用以下脚本更新我的数据库的某些行,该脚本运行得非常好:

update DOS
set NAMEDOS=:name,
AGEDOS=:age,
WEIGHTDOS=:weight
where CODEDOS=:code

我的问题如下,有时权重可以为空或为空,所以我必须设置其他属性。

我试图这样做,但它似乎不起作用:

update DOS
set NAMEDOS=:name,
AGEDOS=:age,
WEIGHTDOS= (case when weight is not null then :weight else :WEIGHTDOS end),
where CODEDOS=:code
你能帮帮我吗?

1 个答案:

答案 0 :(得分:1)

尝试稍微切换括号,我认为:WEIGHTDOS应该没有双点,因为它的直接列名不是参数:

update DOS
    set NAMEDOS=:name,
    AGEDOS=:age,
    WEIGHTDOS= case when (:weight is not null) then :weight 
                  else WEIGHTDOS 
               end,
    where CODEDOS=:code