0

私は許容できる解決策を見つけました。下を見てください。

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を強制終了する必要があります. 別の質問が続きます。

4

1 に答える 1

0

元の編集で述べたように、許容できる解決策を見つけました。

  1. デフォルト設定でpersistence.xmlを作成します
  2. @Bean メソッドでカスタム設定をオーバーライドする
于 2014-12-10T13:17:21.290 に答える