2017-05-17 2 views
1

永続性を使用し始めてから、EntityManager@Injectを使用するまで、プログラムは正常に動作していました。Persistence.xmlの予期しない要素EntityManagerがインジェクトしない

多くのエラーがスローされますが、私はこれが最もブロックしていると思います。

予期しない要素については何か言いますが、オンラインで役立つものは何も見つかりません。

ログイン:

Connected to server 
[2017-05-16 09:13:17,808] Artifact web-example:war exploded: Artifact is being deployed, please wait... 
mei 16, 2017 9:13:18 PM org.apache.tomee.catalina.TomcatWebAppBuilder deployWebApps 
INFO: using default host: localhost 
mei 16, 2017 9:13:18 PM org.apache.tomee.catalina.TomcatWebAppBuilder init 
INFO: ------------------------- localhost ->/
mei 16, 2017 9:13:18 PM org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile 
WARNING: jar '/Users/renzo/development/school/dea/spotitube/app/target/web-example-1.0-SNAPSHOT/WEB-INF/lib/hibernate-jpa-2.0-api-1.0.1.Final.jar' contains offending class: javax.persistence.Entity. It will be ignored. 
mei 16, 2017 9:13:18 PM org.apache.tomee.catalina.TomEEClassLoaderEnricher validateJarFile 
WARNING: jar '/Users/renzo/development/school/dea/spotitube/app/target/web-example-1.0-SNAPSHOT/WEB-INF/lib/jboss-transaction-api_1.1_spec-1.0.1.Final.jar' contains offending class: javax.transaction.Transaction. It will be ignored. 
mei 16, 2017 9:13:18 PM org.apache.openejb.config.ConfigurationFactory configureApplication 
INFO: Configuring enterprise application: /Users/renzo/development/school/dea/spotitube/app/target/web-example-1.0-SNAPSHOT 
mei 16, 2017 9:13:18 PM org.apache.openejb.config.ReadDescriptors deploy 
SEVERE: Unable to load Persistence Unit from EAR: /Users/renzo/development/school/dea/spotitube/app/target/web-example-1.0-SNAPSHOT, module: file:/Users/renzo/development/school/dea/spotitube/app/target/web-example-1.0-SNAPSHOT/WEB-INF/classes/. Exception: unexpected element (uri:"http://xmlns.jcp.org/xml/ns/persistence", local:"persistence"). Expected elements are <{http://java.sun.com/xml/ns/persistence}persistence> 
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://xmlns.jcp.org/xml/ns/persistence", local:"persistence"). Expected elements are <{http://java.sun.com/xml/ns/persistence}persistence> 

/resources/META-INF/persistence.xml

<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" 
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
      xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence 
     http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd 
http://xmlns.jcp.org/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_1.xsd" 
      version="2.1"> 
    <persistence-unit 
      name="mysql" 
      transaction-type="RESOURCE_LOCAL"> 
     <provider>org.hibernate.ejb.HibernatePersistence</provider> 

     <class> 
      nl.han.dea.domain.User 
     </class> 

     <properties> 
      <property name="hibernate.archive.autodetection" value="class"/> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect"/> 
      <property name="hibernate.connection.driver_class" value="com.mysql.cj.jdbc.Driver"/> 
      <property name="hibernate.connection.url" 
         value="jdbc:mysql://localhost:3306/Spotitube?autoReconnect=true&amp;useSSL=false&amp;serverTimezone=UTC"/> 
      <property name="hibernate.connection.username" value="spotitube"/> 
      <property name="hibernate.connection.password" value="java"/> 
      <property name="hibernate.show_sql" value="true"/> 
      <property name="hibernate.flushMode" value="FLUSH_AUTO"/> 
      <property name="hibernate.hbm2ddl.auto" value="update"/> 
     </properties> 

    </persistence-unit> 
</persistence> 

のpom.xml

<project> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>nl.han.dea</groupId> 
    <artifactId>web-example</artifactId> 
    <version>1.0-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <name>web-example</name> 

    <dependencies> 
     <dependency> 
      <groupId>javax</groupId> 
      <artifactId>javaee-api</artifactId> 
      <version>7.0</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <version>6.0.6</version> 
      <scope>compile</scope> 
     </dependency> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.2.6.Final</version> 
     </dependency> 
    </dependencies> 

    <properties> 
     <maven.compiler.source>1.8</maven.compiler.source> 
     <maven.compiler.target>1.8</maven.compiler.target> 
     <failOnMissingWebXml>false</failOnMissingWebXml> 
    </properties> 
</project> 

答えて

2
問題は、ログのこの行で明らかになり

出力:

例外:予期しない要素(uri: "http://xmlns.jcp.org/xml/ns/persistence"、ローカル: "永続性")。

期待要素である< {http://java.sun.com/xml/ns/persistence}永続

これはJPAバージョン2.0と2.1とのミスマッチそれらであること、を教えてくれる。このコンフリクトの理由は、pom.xmlで紹介しているかなり古いバージョンのHibernateにあります。

あなたは、あなたの質問に提示されるようpersistence.xmlとなるようにそれを告げたとしてTomEEのの7.0.xは、JPA 2.1プロバイダを期待するのに対し、Hibernateの4.2.xではのみ、JPA 2.0をサポートしています。

永続性のxmlns = "のhttp:/ /xmlns.jcp.org/xml/ns/persistence " xmlns:xsi =" http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation =" http://xmlns.jcp.org/XML/NS /永続 http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsdhttp://xmlns.jcp.org/xml/ns/persistencehttp://java.sun.com/xml/ns/persistence/persistence_2_1.xsd " バージョン=" 2.1" >

JPAのHibernateサポートの詳細については、Hibernate ORMのダウンロードページを参照してください。 4.3.xにHibernateのバージョンを変更

ソリューション

ほとんどの場合は、あなたが遭遇する問題のいくつかを治す必要があります。場合

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>4.3.11.Final</version> 
</dependency> 

あなたは、さらに、アプリケーションの近代化にHibernate 5.2.xではを試してみることにしたい。ここでは、関連する依存関係の宣言は次のようになります方法です。現在のバージョンでは、依存関係宣言は次のようになります。

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-entitymanager</artifactId> 
    <version>5.2.10.Final</version> 
</dependency 

希望すると助かります。

はアドオン

あなたはTomEE> = 7.0.3セットアップでのHibernate 5.2.xではために行くにしたい場合は、あなたがあなたのpersistence.xml

<property name="tomee.jpa.cdi" value="false" /> 

を追加することをお勧めします、とそうしないと、コンテナは起動時に注入の問題に不満を持ちます。詳細は、this posthereを参照してください。

<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider> 

また

、このような新しい/正しいパッケージに<provider>エントリを変更

関連する問題