我是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:尝试访问字段 来自class的org.hibernate.engine.spi.CascadeStyle.STYLES org.hibernate.engine.spi.EJB3CascadeStyle
我的问题是:我正在尝试做甚么可能吗?如果是这样,怎么样? 或者我应该咬紧牙关并完全使用Spring MVC或其他东西?
注意:这仅适用于单页网站,我试图尽可能简单。
答案 0 :(得分:2)
为了使用Spring Data JPA,您需要像在Spring中一样配置底层JPA实现,例如参见spring-data-jpa-showcase
中的infrastructure.xml
和META-INF/persistence.xml
(自Spring以来) 3.1如果您使用persistence.xml
的{{1}}属性,则可以删除packagesToScan
。
LocalContainerEntityManagerFactoryBean
的第二个问题看起来像是由类路径中存在不同版本的Hibernate jar引起的类加载问题。