我们正在尝试将微服务迁移到 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。
答案 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
,以恢复向后兼容性。
答案 1 :(得分:1)
您需要通过@GeneratedValue(strategy = GenerationType.IDENTITY)更改@GeneratedValue(strategy = GenerationType.AUTO)