更新JPA实体失败,返回null值

时间:2011-03-02 15:25:12

标签: mysql hibernate jpa jboss entity

我正在使用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”都不会更新,所以这也不是我想要的。

...帮助?

1 个答案:

答案 0 :(得分:3)

读取reserved word in mysql,看起来驱动程序没有使用后引号转义名称。我认为最好的解决方案是重命名列。