QueryDSL更新时,设置字段值为NULL

QueryDSL更新时,设置字段值为NULL

表结构:

CREATE TABLE user_attempts 
(
    id INT PRIMARY KEY NOT NULL, 
    username VARCHAR(50) NOT NULL, 
    attempts SMALLINT NOT NULL, 
    lastmodified TIMESTAMP, 
    FOREIGN KEY (username) REFERENCES users (username) 
); 

错误代码:

template.update(userAttempts, update -> update 
       .set(userAttempts.attempts, (short) 0) 
       .set(userAttempts.lastmodified, null) // compilation error here 
       .where(userAttempts.username.eq(username)) 
       .execute();

然而,似乎QueryDSL的设置方法不能接受null,因为它会匹配多个功能签名。

正确代码:

我应该使用setNull方法来代替:

template.update(userAttempts, update -> update 
       .set(userAttempts.attempts, (short) 0) 
       .setNull(userAttempts.lastmodified) 
       .where(userAttempts.username.eq(username)) 
       .execute() 
);

 

你可能感兴趣的:(ORM框架)