我正在使用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在那里做的是在insert语句的列列表中列出“read”和“deleted”列,但不在值列表中列出。我在上面看到的@Column注释中使用了“insertable = false”语句解决了这个问题。
然而,现在,我有一个更大的问题。我想将读取或日期字段设置为非空值。当我这样做时,我得到一个类似的异常“你的SQL语法有错误”。他现在正在做的是列出更新语句where部分的所有字段,包括“read”和“deleted”。他所做的就是检查“......和read = NULL”。其中,在MySQL中,当然应该是“......并且读取IS NULL”。
Rummaging周围,我已经找到了@Column注释的“可更新”参数。但如果我将其设置为false,那么“read”和“deleted”都不会更新,所以这也不是我想要的。
...帮助?