【问题标题】:Hibernate and MySQL throw: check the manual that corresponds to your MySQL server version for the right syntax to use near 'Show'Hibernate 和 MySQL throw:检查与您的 MySQL 服务器版本相对应的手册,以在“显示”附近使用正确的语法
【发布时间】:2015-02-12 22:51:47
【问题描述】:

我正在尝试在 Film 实体之间创建最简单的多对一关系:

@Entity
public class Film {

    @Id
    @GeneratedValue
    private Long id;

并显示实体:

@Entity
public class Show {

    @Id
    @GeneratedValue
    private Long id;

    @ManyToOne
    @JoinColumn(name = "film_id")
    private Film film;

我正在使用 MySQL 数据库和 Hibernate 4.3.0 Final。我已经设置了数据库模式在启动时自动更新。当我开始这个时,我有这样的错误:

错误:HHH000388:不成功:创建表显示(id bigint not null auto_increment,价格小数(19,2),film_id bigint,主键(id)) 14.12.2014 22:37:25 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“Show (id bigint not null auto_increment, price decimal(19,2), film_id bigint, pr”附近使用正确的语法 14.12.2014 22:37:25 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行 错误:HHH000388:不成功:更改表显示添加约束 FK_t3uhu4qn5ughklywjf8vgfjym 外键 (film_id) 引用电影 (id) 14.12.2014 22:37:25 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行 错误:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“显示添加约束 FK_t3uhu4qn5ughklywjf8vgfjym 外键 (film_id) 参考”附近使用正确的语法 14.12.2014 22:37:25 org.hibernate.tool.hbm2ddl.SchemaUpdate 执行

如果我将 FOREIGN_KEY_CHECKS = 0 设置为 MySQL,我也会遇到同样的错误。哪里出了问题?

【问题讨论】:

    标签: java mysql hibernate jpa orm


    【解决方案1】:

    Show is a reserved keyword 在 MySQL 中。

    将关联表更改为 FILM_SHOW 即可:

    @Entity
    @Table(name="FILM_SHOW")
    public class Show {
        ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-06-27
      • 2015-09-23
      • 1970-01-01
      • 2014-08-01
      • 2018-12-23
      • 2020-02-09
      • 1970-01-01
      • 2016-08-06
      相关资源
      最近更新 更多