【DM版本】: DM8
【操作系统】:linux
【CPU】: 8
【问题描述】*:使用hibernate的jpa功能,每次启动时都会删除唯一约束,然后再重建。
它没法判断是否已创建唯一约束从而重启时都会触发删除并创建。
截图注释代码在hibernate-core依赖包,5.2.14版本
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
org.hibernate.tool.schema.internal.AbstractSchemaMigrator#applyUniqueKeys
org.hibernate.tool.schema.internal.AbstractSchemaMigrator#setUniqueConstraintStrategy
经过进一步排查,发现



hibernate存的对象中的唯一索引标识的key是INDEX33559752
在检查是否已存在对应索引的时候,这里用的是实际命名的索引名称,比如我的命名是ux_xxxx_xxx, 此时必然无法匹配,从而在启动时就触发删除和新增索引操作。
目前的处理方式是,对于唯一索引的处理策略,改用这个策略处理。
在构建SessionFactory时加入下面的配置
properties.put(“hibernate.schema_update.unique_constraint_strategy”, UniqueConstraintSchemaUpdateStrategy.RECREATE_QUIETLY);