hibernate 4 - spring 4 セットアップでは、SchemaExport
オブジェクトを使用して DDL を生成できました。
LocalSessionFactoryBean sfb = (LocalSessionFactoryBean) context.getBean("&sessionFactory");
SchemaExport schema = new SchemaExport(sfb.getConfiguration());
ただし、休止状態 5 はSchemaExport(Configuration configuration)
コンストラクターをSchemaExport(MetadataImplementator metadataImplementator)
.
MetadataImplementator はすぐには利用できません
org.springframework.orm.hibernate5.LocalSessionFactoryBean
また 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を使用しています