我知道有很多关于这个问题的话题,但我仍然无法解决我的问题。
这是实体类:
@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
并尝试了几种方法来通过更改 bool 字段的注释来解决我的问题,但没有一个有效。
我的映射有什么问题以及如何让它工作?
感谢您的帮助和您的宝贵时间;)
最佳答案
单词read
是MySQL 的保留关键字之一。查看 MySQL 5.0 Manual - 9.3. Reserved Words 上的表格.使用不同的名称可以避免这种情况。
关于mysql - Hibernate + MySQL 中的 bool 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824085/