我有一个使用Spring 4.3.2和Hibernate 4.3.10的项目。
我想添加一个Spring数据JpaRepository。
一旦我添加了依赖spring-data-jpa:jar:1.8.0.RELEASE,我就会得到以下异常:
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:170)
at org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:1082)
at org.springframework.beans.factory.access.SingletonBeanFactoryLocator.useBeanFactory(SingletonBeanFactoryLocator.java:396)
就行:
BeanFactory bf = locator.useBeanFactory(beanFactoryName)
即。我实际上并没有使用任何spring-data类。我只是加了罐子。
相关的依赖是:
[INFO] | +- org.hibernate:hibernate-entitymanager:jar:4.3.10.Final:compile
[INFO] | | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.5.Final:compile
[INFO] | | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile
[INFO] | | \- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile
[INFO] +- org.springframework:spring-core:jar:4.3.2.RELEASE:compile
[INFO] | \- commons-logging:commons-logging:jar:1.2:compile
[INFO] +- org.springframework:spring-beans:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework:spring-context:jar:4.3.2.RELEASE:compile
[INFO] | \- org.springframework:spring-aop:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework:spring-context-support:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework:spring-tx:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework:spring-jdbc:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework:spring-orm:jar:4.3.2.RELEASE:compile
[INFO] +- org.springframework.webflow:spring-binding:jar:2.4.0.RELEASE:compile
[INFO] | \- opensymphony:ognl:jar:2.6.11:compile
[INFO] +- org.springframework:spring-expression:jar:4.3.2.RELEASE:compile
[INFO] +- org.hibernate:hibernate-ehcache:jar:4.3.10.Final:compile
[INFO] | \- org.hibernate:hibernate-core:jar:4.3.10.Final:compile
[INFO] +- net.sf.ehcache:ehcache:jar:2.10.4:compile
[INFO] +- org.aspectj:aspectjrt:jar:1.8.5:compile
似乎必然存在某种不兼容性,但我无法理解。任何帮助表示赞赏!
答案 0 :(得分:1)
我可以将Spring Data JPA与Hibernate一起使用吗?
绝对! Spring Data JPA构建于JPA之上,而Hibernate是最受欢迎的JPA实现。
关于你得到的例外:
我首先要转向更新版本的Spring,Spring Data和Hibernate。 你提到的版本真的很旧。
虽然不太可能修复异常,但我建议
搜索异常,可能加上“Spring Data”检查是否有任何结果符合您的情况。
找出正在初始化ApplicationContext的内容,因为它似乎发生了两次。一旦通过这条线,你就引用了。 不幸的是,你没有提到那条线的位置。 一种方法是在检查触发异常时设置断点。 你的代码应该到那里两次。 一旦它触发异常,一次触发异常。 然后摆脱其中一个处决。