В настройке hibernate 4 - spring 4 можно было сгенерировать DDL с использованием объекта SchemaExport
:
LocalSessionFactoryBean sfb = (LocalSessionFactoryBean) context.getBean("&sessionFactory");
SchemaExport schema = new SchemaExport(sfb.getConfiguration());
Но hibernate 5 заменяет конструктор SchemaExport(Configuration configuration)
на SchemaExport(MetadataImplementator metadataImplementator)
.
MetadataImplementator недоступен на
org.springframework.orm.hibernate5.LocalSessionFactoryBean
or org.springframework.orm.hibernate5.LocalSessionFactoryBuilder
Я взломал это так:
MetadataSources metadataSources = (MetadataSources) FieldUtils.readField(configuration, "metadataSources", true);
Metadata metadata = metadataSources
.getMetadataBuilder(configuration.getStandardServiceRegistryBuilder().build())
.applyPhysicalNamingStrategy(new MyPhysicialNamingStrategy())
.applyImplicitNamingStrategy(ImplicitNamingStrategyJpaCompliantImpl.INSTANCE)
.build();
MetadataImplementor metadataImpl = (MetadataImplementor) metadata;
SchemaExport schema = new SchemaExport(metadataImplementor);
Но было бы неплохо иметь лучший способ, а также аннотации Validator (@NotNull, @Size) не используются для генерации DDL, и я не знаю, является ли это ошибкой в Hibernate 5 или этой настройке.
Я использую спящий режим 5.0.0.CR4 и весну 4.2.0.RELEASE.