我对 Spring 非常陌生,但我正在开发一个使用 Spring Data JPA 为 JPA 实体生成存储库的项目。
我目前正在添加一个简单的模块,以便能够在网页上显示一些数据。我添加了一个 Servlet,但从那里访问存储库时遇到问题。
我在 web.xml 中添加了一个 ContextLoaderListener,我在 applicationContext.xml 中引用了 jpa:repositories 和 persistence.xml,但我目前遇到了这个异常:
No unique bean of type [javax.persistence.EntityManagerFactory] is defined: expected single bean but found 0.
但是当我在 persistence.xml 中添加 EntityManagerFactory 时,我收到以下神秘消息:
java.lang.IllegalAccessError: tried to access field org.hibernate.engine.spi.CascadeStyle.STYLES from class org.hibernate.engine.spi.EJB3CascadeStyle
我的问题是:我想做的事情可能吗?如果是这样,怎么办? 或者我应该硬着头皮使用 Spring MVC 或完全使用其他东西?
注意:这仅适用于单页网站,我试图使其尽可能简单。
最佳答案
为了使用 Spring Data JPA,您需要像在 Spring 中通常执行的那样配置底层 JPA 实现,例如,请参阅 infrastruction.xml
和 META-INF/persistence。
(从 Spring 3.1 开始,如果使用 spring-data-jpa-showcase
中的 xmlLocalContainerEntityManagerFactoryBean
的 packagesToScan
属性,则可以摆脱 persistence.xml
)。
您的第二个问题 IllegalAccessError
看起来像是由于类路径中存在不同版本的 Hibernate jar 引起的类加载问题。
关于java - 如何在简单的Servlet中使用Spring Data JPA?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12384018/