我可以将spring-data-jpa与hibernate一起使用吗?

时间:2018-04-05 04:15:43

标签: hibernate spring-data-jpa

我有一个使用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

似乎必然存在某种不兼容性,但我无法理解。任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

  

我可以将Spring Data JPA与Hibernate一起使用吗?

绝对! Spring Data JPA构建于JPA之上,而Hibernate是最受欢迎的JPA实现。

关于你得到的例外:

我首先要转向更新版本的Spring,Spring Data和Hibernate。 你提到的版本真的很旧。

虽然不太可能修复异常,但我建议

  1. 搜索异常,可能加上“Spring Data”检查是否有任何结果符合您的情况。

  2. 找出正在初始化ApplicationContext的内容,因为它似乎发生了两次。一旦通过这条线,你就引用了。 不幸的是,你没有提到那条线的位置。 一种方法是在检查触发异常时设置断点。 你的代码应该到那里两次。 一旦它触发异常,一次触发异常。 然后摆脱其中一个处决。