【问题标题】:hibernate_sequence doesn't existhibernate_sequence 不存在
【发布时间】:2017-02-09 04:04:49
【问题描述】:

我正在尝试使用 Hibernate 注释映射一个类,但它告诉我 hibernate_sequence 不存在。

我用mysql。

@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column()
    private int id;

我已经声明了 auto_increment 字段。我错过了什么?

【问题讨论】:

标签: java mysql hibernate


【解决方案1】:

在你的 persistence.xml 中,尝试添加这个

<property name="hbm2ddl.auto" value="update"/>

这可能可行。

【讨论】:

  • 这不是解决方案,在生产环境中可能会很危险,因为休眠将能够更改数据库结构。
【解决方案2】:

@GeneratedValue(strategy = GenerationType.IDENTITY)改成

@GeneratedValue(strategy = GenerationType.AUTO)

试试吧,它对我有用,创建表后,将GenerationType 更改回 IDENTITY、TABLE 或其他代类型。

【讨论】:

    【解决方案3】:

    您可以在 db 中手动创建序列

    create sequence hibernate_sequence start with 1 increment by 1
    

    但并非所有数据库都支持序列

    例如,如果您使用的是 Mysql,那么上面的查询将失败。 在 mysql 中,您需要将 AUTO_INCREMENT 与以下查询中的主键一起使用

    CREATE TABLE `mysql_table` (
      `id` bigint NOT NULL AUTO_INCREMENT,
      `name` varchar(500) DEFAULT NULL,
      PRIMARY KEY (`id`),
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-26
      • 1970-01-01
      • 1970-01-01
      • 2017-06-28
      • 2017-02-27
      • 2019-10-27
      • 2017-05-18
      • 2018-01-22
      相关资源
      最近更新 更多