java 如何在springboot中设置hibernate.id.db_structure_naming_strategy到legacy?

ca1c2owp  于 2023-04-04  发布在  Java
关注(0)|答案(1)|浏览(100)

由于依赖关系升级:

  • spring-boot-starter-parent:2.7.1 -〉3.0.0
  • mysql:mysql-connector-java -〉com.mysql:mysql-connector-j

我开始使用hibernate-core-6.1.5和他的新策略来给予表命名。所以现在测试被破坏了,因为当我想把数据保存到某个表时,一个“_SEQ”被添加到表的名称中,测试找不到表。
我发现了一些来源:

为了绕过这个问题,我在每个实体中指定策略:

@Entity
@Table(name = "animal")
public class Animal {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)  // this will overwrite SEQUENCE
    @Column(name = "id")
    private Long id;

这可以在application.yml中完成吗?

vxf3dgd4

vxf3dgd41#

多亏了M. Deinum,问题才得以解决。
现在我的application.yml是:

spring.jpa.properties.hibernate.id.db_structure_naming_strategy: legacy
spring.jpa.hibernate.naming:
  implicit-strategy: org.hibernate.boot.model.naming.ImplicitNamingStrategyLegacyJpaImpl
  physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

spring:
  profiles.active: dev
  jpa.hibernate.use-new-id-generator-mappings: false
  jpa.properties.jakarta.persistence.sharedCache.mode: ALL
  hibernate.show_sql: true
  flyway.out-of-order: false

# other stuff

相关问题