私は許容できる解決策を見つけました。下を見てください。
Kundera を持続性プロバイダーとして使用して、JPA オブジェクトを HBase に保管したいと考えています。私は注釈駆動型の方法ですべてを行います。つまり、persistence.xml を持っていませんし、必要としません。
これまでのところ、次のことを行いました。
@Bean
public LocalContainerEntityManagerFactoryBean entityManagerFactory() {
final LocalContainerEntityManagerFactoryBean bean = new LocalContainerEntityManagerFactoryBean();
bean.setPersistenceProviderClass(KunderaPersistence.class);
final Properties props = new Properties();
props.setProperty("kundera.dialect", "hbase");
props.setProperty("kundera.client.lookup.class",
HBaseClientFactory.class.getName());
props.setProperty("kundera.cache.provider.class",
EhCacheProvider.class.getName());
props.setProperty("kundera.cache.config.resource",
"/ehcache.xml");
props.setProperty("kundera.ddl.auto.prepare", "update");
props.setProperty("kundera.nodes", "myhbase.example.com");
props.setProperty("kundera.port", "2182");
props.setProperty("kundera.keyspace", "foo");
bean.setJpaProperties(props);
return bean;
}
にehcache.xml
デフォルト構成の がありますsrc/main/resources
。
これを実行しようとすると、ベイルアウトし、スタック トレースは次のようになります。
... many more ...
Caused by: java.lang.IllegalStateException: No persistence units parsed from {classpath*:META-INF/persistence.xml}
at org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager.obtainDefaultPersistenceUnitInfo(DefaultPersistenceUnitManager.java:655)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.determinePersistenceUnitInfo(LocalContainerEntityManagerFactoryBean.java:358)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:307)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:318)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1613)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1550)
... 152 more
永続化ユニット名を設定すると、次のbean.setPersistenceUnitName("foo");
ようになります。No persistence unit with name 'foo' found
私は何を間違っていますか、実際にpersistence.xmlが必要ですか? コマンドラインスイッチを介して構成を設定できるようにしたいので、必要ありません。Environment
これらは、メソッドのパラメーターとして使用できる に挿入され、@Bean
この方法でプロパティ オブジェクトに配置されます。
- - 編集 - -
基本設定で を作成し、オブジェクトpersistence.xml
のカスタム設定を上書きするだけです。Properties
これは機能しますが、別の問題があります.HBaseに接続するとJavaプロセスがロックされるため、-9を強制終了する必要があります. 別の質問が続きます。