【问题标题】:Boolean mapping issue in Hibernate + MySQLHibernate + MySQL中的布尔映射问题
【发布时间】:2014-01-16 10:14:01
【问题描述】:

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

这是实体类:

@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 并尝试了几种方法来通过更改布尔字段的注释来解决我的问题,但它们都没有奏效。

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

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

【问题讨论】:

    标签: mysql hibernate spring-mvc hibernate-mapping


    【解决方案1】:

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

    【讨论】:

    • 对我的问题的回答越简单,我认为我就越愚蠢 :D 看起来你为我节省了很多时间和压力。干杯!
    猜你喜欢
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 2016-07-20
    • 2011-07-31
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-01-31
    相关资源
    最近更新 更多