Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何通过@Bean方法通过Spring引导以编程方式正确配置Kundera?_Spring_Hibernate_Jpa_Spring Boot_Kundera - Fatal编程技术网

如何通过@Bean方法通过Spring引导以编程方式正确配置Kundera?

如何通过@Bean方法通过Spring引导以编程方式正确配置Kundera?,spring,hibernate,jpa,spring-boot,kundera,Spring,Hibernate,Jpa,Spring Boot,Kundera,我找到了一个可以接受的解决办法。看看下面 我想使用Kundera作为持久性提供者,在HBase中存储我的JPA对象。我以注释驱动的方式做每件事,也就是说,我没有也不想要persistence.xml 到目前为止,我做了以下工作: @Bean public LocalContainerEntityManagerFactoryBean entityManagerFactory() { final LocalContainerEntityManagerFactoryBean bean = ne

我找到了一个可以接受的解决办法。看看下面

我想使用Kundera作为持久性提供者,在HBase中存储我的JPA对象。我以注释驱动的方式做每件事,也就是说,我没有也不想要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;
}
我在src/main/resources中有一个带有默认配置的ehcache.xml

当我尝试运行此程序时,它退出,堆栈跟踪归结为:

... 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.setPersistenceUnitNamefoo设置持久化单元名称时;我得到:未找到名为“foo”的持久化单元

我做错了什么,我真的需要persistence.xml吗?我不想要,因为我希望能够通过命令行开关设置配置。它们被插入到我可以用作@Bean方法参数的环境中,并以这种方式放入我的properties对象中

--编辑--


现在,我使用基本设置创建了persistence.xml,并覆盖了属性对象中的自定义设置。这是可行的,但现在我又遇到了另一个问题,连接到HBase会严重锁定Java进程,因此我不得不杀死它。另一个问题如下。

正如我在原始编辑中所述,我找到了一个可接受的解决方案:

使用默认设置创建persistence.xml 重写@Bean方法中的自定义设置
. 这是一个关于将昆德拉与Spring结合使用的wiki页面。我知道这个页面,但它使用XML配置。我以编程的方式做每件事。但是我上面的方法,创建persistence.xml并以编程方式重写一些参数,是有效的。您能否共享应用程序尝试通过昆德拉连接到HBase时生成的一些日志?