表'acme_ms.hibernate_sequence'不存在

时间:2018-08-22 19:36:24

标签: java mysql spring hibernate spring-boot

我们正在尝试将微服务迁移到 Spring Boot 2 ,目前,我们正在使用 Spring Boot 1.5.6.RELEASE

在迁移过程中,我们认识到微服务已部分损坏,在日志文件中我们发现了以下错误:

  

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:表   'acme_ms.hibernate_sequence'不存在

目前,我们的应用程序中仅存在一个域类:

@Getter
@Setter
@ToString
@Entity
@Table(name = "acme_ms_card_details")
public class CardDetails {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String cardType;
}

我们发现与GeneratedValue策略类型有关的问题,我们尝试将策略更改为GenerationType.IDENTITY,错误消失了。

因此,我们现在有一个问题: 为什么使用Spring boot 1.5 GenerationType.AUTO可以很好地工作,但是在迁移到Spring boot 2之后,GenerationType.AUTO根本无法工作。

重大更改是什么?

注意:作为数据库,我们正在使用MySQL。

2 个答案:

答案 0 :(得分:3)

Spring Boot 1.5.6使用Hibernate 5.0.12.Final,而Spring Boot 2使用Hibernate 5.2.12.Final,并且新的Hibernate版本的更改中断了strategy = GenerationType.AUTO

您需要将以下属性hibernate.id.new_generator_mappings添加到true,以恢复向后兼容性。

hibernate 5 sequencegenerator not giving the right value

答案 1 :(得分:1)

您需要通过@GeneratedValue(strategy = GenerationType.IDENTITY)更改@GeneratedValue(strategy = GenerationType.AUTO)