Hibernate + MySQL中的布尔映射问题

时间:2013-12-29 10:16:22

标签: mysql hibernate spring-mvc hibernate-mapping

我知道这个问题有很多话题,但我仍然无法解决我的问题。

这是实体类:

@Entity
@Table(name = "messages")
public class Message
{
....
@Column(name = "read", nullable = false, columnDefinition = "TINYINT(1)")
private boolean read;
....
public boolean isRead()
{
    return read;
}

public void setRead(boolean read)
{
this.read = read;
}

messages MySQL表格中,read列的输入为tinyint(1)。在将对象保存到表之前,我设置了setRead(true)。当我通过Hibernate(save())保存对象时,我得到以下错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in 
your SQL syntax; check the manual that corresponds to your MySQL server version 
for the right syntax to use near 
'read, senderId, title) values ('ujhjg', 1, 1, 'W pustyni i w puszczy')'

我使用jdbc.dialect=org.hibernate.dialect.MySQL5InnoDBDialect并尝试通过更改boolean field的注释来解决我的问题,但没有一种方法可以解决我的问题。

我的地图有什么问题,以及如何让它成功?

感谢您的帮助和时间;)

1 个答案:

答案 0 :(得分:6)

单词read是MySQL保留关键字之一。查看MySQL 5.0 Manual - 9.3. Reserved Words上的表格。使用不同的名称来避免这种情况。