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?