persistence.xml-springjpa

persistence.xml-springjpa,spring,google-app-engine,jpa,Spring,Google App Engine,Jpa,我读了几十篇文章,但我不知道错误在哪里。。。它应该非常简单。我正在尝试使用Spring和JPA在appengine上编写应用程序 我正在使用JEE5项目(不知道是否重要) 谢谢你的帮助。答案由两部分组成 denisk关于persistence.xml的位置是正确的,它应该在src下 我缺少了一些对datanucleus的依赖关系(我认为它们是提供的)。在添加它们之后,我得到了大量相关的例外情况。解决这些问题后,一切正常 所以-这是两个问题的巧合,每个问题都掩盖了另一个问题的一部分。在编译输出中(

我读了几十篇文章,但我不知道错误在哪里。。。它应该非常简单。我正在尝试使用Spring和JPA在appengine上编写应用程序

我正在使用JEE5项目(不知道是否重要)


谢谢你的帮助。

答案由两部分组成

  • denisk关于persistence.xml的位置是正确的,它应该在src下
  • 我缺少了一些对datanucleus的依赖关系(我认为它们是提供的)。在添加它们之后,我得到了大量相关的例外情况。解决这些问题后,一切正常

  • 所以-这是两个问题的巧合,每个问题都掩盖了另一个问题的一部分。

    在编译输出中(编译类的位置)是
    META-INF/persistence.xml
    ?如果没有,那么您是否尝试手动将
    META-INF/persistence.xml
    放在那里,并查看问题是否仍然存在?是的,当我构建它时,它在\u项目/META-INF文件夹的target/name\u中,也在project.war/META-infact中,实际上是您的类所在的位置,您的文件夹
    cz/cvut/fel/pupilbook/../yourclass.class
    放置在此处。因此,
    META-INF
    应该转到
    cz
    文件夹下的编译类。但是,如果这不起作用,那么我和你一样困惑……你能发布完整的解决方案吗。我的意思是,在那之后,你做了什么改变?很好。对不起,这个答案已经有两年多的历史了,我没有可用的来源:-(
    <tx:annotation-driven transaction-manager="transactionManager"/>
    
    <bean id="persistenceUnitManager" class="org.springframework.orm.jpa.persistenceunit.DefaultPersistenceUnitManager">
        <property name="persistenceXmlLocation">
            <value>classpath*:/META-INF/persistence.xml</value>
        </property>
    </bean>
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
        <property name="persistenceUnitName" value="transactions-optional" />
    </bean>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
        <property name="entityManagerFactory" ref="entityManagerFactory" />
    </bean>
    
    <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" />
    <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <persistence xmlns="http://java.sun.com/xml/ns/persistence"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
            http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd" version="1.0">
    
        <persistence-unit name="transactions-optional">
            <provider>org.datanucleus.store.appengine.jpa.DatastorePersistenceProvider</provider>
            <properties>
                <property name="datanucleus.NontransactionalRead" value="true"/>
                <property name="datanucleus.NontransactionalWrite" value="true"/>
                <property name="datanucleus.ConnectionURL" value="appengine"/>
            </properties>
        </persistence-unit>
    
    </persistence>
    
    Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'genericJpaDAO': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: protected javax.persistence.EntityManagerFactory cz.cvut.fel.pupilbook.dao.support.jpa.GenericJpaDAO.entityManagerfactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in ServletContext resource [/WEB-INF/context/applicationContext.xml]: Invocation of init method failed; nested exception is javax.persistence.PersistenceException: No Persistence provider for EntityManager named transactions-optional
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:285)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1074)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:844)