【问题标题】:How to use Spring Data JPA in a simple Servlet?如何在简单的 Servlet 中使用 Spring Data JPA?
【发布时间】:2012-09-05 05:28:20
【问题描述】:

我对 Spring 很陌生,但我正在开发一个使用 Spring Data JPA 为 JPA 实体生成存储库的项目。

我目前正在添加一个简单的模块,以便能够在网页上显示一些数据。我添加了一个 Servlet,但我无法从那里访问存储库。

我在 web.xml 中添加了一个 ContextLoaderListener,我在 applicationContext.xml 中引用了 jpa:repositories 和 persistence.xml,但我目前遇到了这个异常:

没有定义类型为 [javax.persistence.EntityManagerFactory] ​​的唯一 bean:预期为单个 bean,但发现为 0。

但是当我在 persistence.xml 中添加一个 EntityManagerFactory 时,我收到以下神秘消息:

java.lang.IllegalAccessError: 试图访问字段 org.hibernate.engine.spi.CascadeStyle.STYLES 来自类 org.hibernate.engine.spi.EJB3CascadeStyle

我的问题是:我正在尝试做的事情是否可能?如果是这样,怎么办? 还是我应该咬紧牙关,完全使用 Spring MVC 或其他东西?

注意:这仅适用于单页网站,我试图使其尽可能简单。

【问题讨论】:

    标签: java spring servlets spring-data-jpa


    【解决方案1】:

    为了使用 Spring Data JPA,您需要像在 Spring 中通常那样配置底层 JPA 实现,例如,参见 spring-data-jpa-showcase 中的 infrastructure.xmlMETA-INF/persistence.xml(从 Spring 3.1 开始,您可以摆脱persistence.xml 如果您使用packagesToScanLocalContainerEntityManagerFactoryBean 属性。

    IllegalAccessError 的第二个问题看起来像是类路径中存在不同版本的 Hibernate jar 引起的类加载问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-10
      • 2013-05-11
      • 1970-01-01
      • 2014-07-12
      • 2012-03-25
      • 2018-09-18
      相关资源
      最近更新 更多