如何通过@Bean方法通过Spring引导以编程方式正确配置Kundera?
我找到了一个可以接受的解决办法。看看下面 我想使用Kundera作为持久性提供者,在HBase中存储我的JPA对象。我以注释驱动的方式做每件事,也就是说,我没有也不想要persistence.xml 到目前为止,我做了以下工作:如何通过@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
@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时生成的一些日志?