使用ddl-auto UPDATE时将Hibernate 4升级到5

时间:2017-03-20 18:18:05

标签: java hibernate spring-boot ddl

Hibernate 4应用程序设置

spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.DefaultComponentSafeNamingStrategy

Hibernate 5应用程序设置

spring.jpa.hibernate.ddl-auto = update
spring.jpa.hibernate.naming.implicit-strategy = org.hibernate.boot.model.naming.ImplicitNamingStrategyComponentPathImpl
spring.jpa.hibernate.naming.physical-strategy = org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl

根据旧模型生成表格和列,但预测关键名称更改

所以我有:

org.hibernate.tool.hbm2ddl.SchemaUpdate  : HHH000228: Running hbm2ddl schema update
Unable to execute schema management to JDBC target [alter table acidentepessoal_cruz_em add constraint FKddk6qn84r6c1kyhukvffaleao foreign key (emCruzamentos_id) references CruzamentoEm]
ORA-02275: such a referential constraint already exists in the table

ddl-auto update时,框架会尝试创建另一个FK,因为hibernate 5会生成与先前版本不同的FK名称。

我尝试扩展ImplicitNamingStrategyComponentPathImpl并将FK名称生成委托给DefaultComponentSafeNamingStrategy。当我意识到这只处理表和列名时,我感到很惊讶。

如何管理?如何在Hibernate 5中使用hibernate 4外键名称生成?使用ddl-auto = update时如何从Hibernate 4升级到5?

0 个答案:

没有答案