0

我对 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.EJB3CascadeStyle 访问字段 org.hibernate.engine.spi.CascadeStyle.STYLES

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

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

4

1 回答 1

2

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

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

于 2012-09-12T08:55:07.077 回答