mysql - Hibernate + MySQL 中的 bool 映射问题

标签 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 并尝试了几种方法来通过更改 bool 字段的注释来解决我的问题,但没有一个有效。

我的映射有什么问题以及如何让它工作?

感谢您的帮助和您的宝贵时间;)

最佳答案

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

关于mysql - Hibernate + MySQL 中的 bool 映射问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20824085/

相关文章:

java - 如何从存储库返回多个扩展类的类?

spring错误没有JdbcTemplate类型的限定bean

java - Spring MVC 显示数据库中的数据

mysql COUNT 函数根据真实列值在两个或多个列上

php - 用于计算单列评级的复杂 SQL SELECT

mysql - 如何使用mysql查询发送已到时间的电子邮件

java - 如何处理 RESTful Web 服务中的聚合和组合

mysql - 如果 3 个字段匹配,则插入或更新 MySQL 数据库

java - 用户使用 Servlet 和 Hibernate 上传图像

hibernate - 当表具有 UUID 字段时,我可以使用 Hibernate 工具对 Postgresql 数据库进行逆向工程吗?