gpt4 book ai didi

mysql - 更新 JPA 实体因空值而失败

转载 作者:行者123 更新时间:2023-11-29 02:06:25 25 4
gpt4 key购买 nike

我正在使用 JPA (Hibernate) 在 MySQL 5.0 服务器上存储实体。

这是简化形式的实体:

@Entity
@Table(name = "messages")
public class Message implements Serializable
{
@Id
@GeneratedValue
@Column
private long id;

@Column
private String content;

@Column(insertable = false)
private Date read;

@Column(insertable = false)
private Date deleted;
}

表“messages”中的列“read”和“deleted”被定义为可以包含 NULL 值。当我第一次尝试保留其中一个实体时,出现了异常。显然,Hibernate 在那里做的是在插入语句的列列表中列出“读取”和“已删除”列,但不在值列表中。我使用您在上面看到的 @Column 注释中的“insertable = false”语句解决了这个问题。

然而,现在我遇到了一个更大的问题。我想将读取或日期字段设置为非空值。当我这样做时,我得到一个类似的异常“你的 SQL 语法有错误”。他现在做的是列出update语句where部分的所有字段,包括“read”和“deleted”。他所做的就是检查“...and read=NULL”。其中,在 MySQL 中,当然应该是“...并读取 IS NULL”。

翻来覆去,我已经找到了@Column 注释的“可更新”参数。但是,如果我将其设置为 false,则“已读”和“已删除”都不会更新,所以这也不是我想要的。

...帮助?

最佳答案

readreserved word in mysql看起来驱动程序没有用反引号转义名称。我认为最好的解决方案是重命名该列。

关于mysql - 更新 JPA 实体因空值而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5169633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com