javax.persistence.PersistenceException:[PersistenceUnit:vodPersistenceUnit]未找到类或包

时间:2013-08-05 08:58:45

标签: java spring hibernate

我收到以下错误:

  

使用名称创建bean时出错   'org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor#0'   在类路径资源[jpaDaoContext.xml]中定义:初始化   豆子失败了;嵌套异常是   org.springframework.beans.factory.BeanCreationException:错误   在类中定义名为'vodEntityManagerFactory'的bean   path resource [jpaDaoContext.xml]:调用init方法失败;   嵌套异常是javax.persistence.PersistenceException:   [PersistenceUnit:vodPersistenceUnit]未找到类或包

我在谷歌上看了一下,我被告知要选择transaction-type = RESOURCE_LOCAL,但设置已经是那样了。这些设置有什么问题:

 <?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">

    <!-- transaction-type is RESOURCE_LOCAL or JTA -->
    <persistence-unit name="vodPersistenceUnit"
        transaction-type="RESOURCE_LOCAL">

        <class>mypackage.persistent.HistoriqueAction</class>
        <class>mypackage.persistent.ParametresTechniques</class>
        <class>mypackage.persistent.TicketType</class>
        <class>mypackage.persistent.TransactionType</class>
        <class>mypackage.persistent.StatutSession</class>
        <class>mypackage.persistent.Statistique</class>
        <class>mypackage.persistent.StatUser</class>

        <!-- Avoid to scan *.class and *.hbm.xml -->
        <exclude-unlisted-classes />


    </persistence-unit>

</persistence>

此致

4 个答案:

答案 0 :(得分:5)

我解决了这个问题。我必须在“persistence.xml”文件中注释这三行:

   <!--class>mypackage.persistent.TicketType</class>
    <class>mypackage.persistent.TransactionType</class>
    <class>mypackage.persistent.StatutSession</class--> 

目前我不知道为什么它解决了这个问题。调试这个spring文件真的很难。

答案 1 :(得分:3)

如果你必须注释掉“class”元素,那么很可能其中一个类未定义,或者在类路径中不可用。

我遇到了同样的错误,一旦完全限定名称都正确就解决了。理想情况下,Hibernate应该告诉你哪个类没有找到,但遗憾的是它在这种情况下不会这样做。

答案 2 :(得分:1)

您还没有这样做,将<property name="persistenceUnitName" value="vodPersistenceUnit" />放在您的jpaDaoContext.xml中作为您的entityManagerFactory bean定义的属性,如:

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
  <property name="persistenceUnitName" value="vodPersistenceUnit" />
  <property name="dataSource" ref="dataSource" />
  <property name="jpaVendorAdapter">...</property>
</bean>

答案 3 :(得分:0)

尝试在WebLogic 12.1.3中运行Spring Boot应用程序时遇到此异常在依赖关系树中,我发现spring-tx包含在其中一个常见项目库中。我们的特定应用程序仅调用Web服务,因此无需数据库访问。所以在库依赖中我添加了:

<exclusions><exclusion> <groupId>org.springframework</groupId><artifactId>spring-tx</artifactId></exclusion></exclusions>