Spring 4 と Hibernate 4 では、Reflection を使用して、次のコードを使用して現在の環境から Hibernate 構成オブジェクトを取得できました。
@Autowired LocalContainerEntityManagerFactoryBean lcemfb;
EntityManagerFactoryImpl emf = (EntityManagerFactoryImpl) lcemfb.getNativeEntityManagerFactory();
SessionFactoryImpl sf = emf.getSessionFactory();
SessionFactoryServiceRegistryImpl serviceRegistry = (SessionFactoryServiceRegistryImpl) sf.getServiceRegistry();
Configuration cfg = null;
try {
Field field = SessionFactoryServiceRegistryImpl.class.getDeclaredField("configuration");
field.setAccessible(true);
cfg = (Configuration) field.get(serviceRegistry);
} catch (NoSuchFieldException | SecurityException | IllegalArgumentException | IllegalAccessException e) {
e.printStackTrace();
}
SchemaUpdate update = new SchemaUpdate(serviceRegistry, cfg);
Hibernate 5 ではMetadataImplementor
、これらのオブジェクトのいずれからも利用できないように見える some を使用する必要があります。と一緒に使ってみましMetadataSources
たserviceRegistry
。しかし、それは間違った種類のServiceRegistry
.
これを機能させる他の方法はありますか?