persistence.xml的提供程序信息是可选的吗?

时间:2016-09-09 20:37:07

标签: java hibernate jpa java-ee jboss

我是JBoss和JPA的新手,但下面是我现有的Hibernate JPA应用程序中的persistence.xml,它运行在JBoss EAP上

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
    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_2_0.xsd">
    <persistence-unit name="TeradataDB" transaction-type="JTA">
        <jta-data-source>java:/jdbc/trucare/trucareEDW</jta-data-source>
    </persistence-unit>
</persistence>

我期待xml中的额外行与提供者信息如此...

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

但是我的应用程序运行不了这条线,它怎么可能呢? JPA在哪里获取提供程序信息,即使在persistence.xml中没有提到它。但是,我的应用程序运行正常,没有任何问题..

我项目中的罐子: -

m2\repository\com\google\code\gson\gson\2.2.4\gson-2.2.4.jar
m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13-sources.jar
m2\repository\org\codehaus\jackson\jackson-mapper-asl\1.9.13\jackson-mapper-asl-1.9.13.jar
m2\repository\org\codehaus\jackson\jackson-core-asl\1.9.13\jackson-core-asl-1.9.13.jar
m2\repository\org\json\json\20090211\json-20090211.jar
m2\repository\com\teradata\jdbc\terajdbc4\14.10.00.26\terajdbc4-14.10.00.26.jar
m2\repository\javax\enterprise\cdi-api\1.0-SP4\cdi-api-1.0-SP4.jar
m2\repository\org\jboss\spec\javax\interceptor\jboss-interceptors-api_1.1_spec\1.0.1.Final\jboss-interceptors-api_1.1_spec-1.0.1.Final.jar
m2\repository\javax\inject\javax.inject\1\javax.inject-1.jar
m2\repository\org\jboss\spec\javax\annotation\jboss-annotations-api_1.1_spec\1.0.1.Final\jboss-annotations-api_1.1_spec-1.0.1.Final.jar
m2\repository\org\jboss\spec\javax\ws\rs\jboss-jaxrs-api_1.1_spec\1.0.1.Final\jboss-jaxrs-api_1.1_spec-1.0.1.Final.jar
m2\repository\org\hibernate\javax\persistence\hibernate-jpa-2.1-api\1.0.0.Final\hibernate-jpa-2.1-api-1.0.0.Final.jar
m2\repository\org\jboss\spec\javax\ejb\jboss-ejb-api_3.1_spec\1.0.2.Final\jboss-ejb-api_3.1_spec-1.0.2.Final.jar
m2\repository\org\hibernate\hibernate-validator\4.2.0.Final\hibernate-validator-4.2.0.Final.jar
m2\repository\javax\validation\validation-api\1.0.0.GA\validation-api-1.0.0.GA.jar
m2\repository\org\hibernate\hibernate-jpamodelgen\1.2.0.Final\hibernate-jpamodelgen-1.2.0.Final.jar
m2\repository\org\hibernate\hibernate-validator-annotation-processor\4.2.0.Final\hibernate-validator-annotation-processor-4.2.0.Final.jar
m2\repository\junit\junit\4.11\junit-4.11.jar
m2\repository\org\hamcrest\hamcrest-core\1.3\hamcrest-core-1.3.jar
m2\repository\org\jboss\arquillian\junit\arquillian-junit-container\1.1.0.Final\arquillian-junit-container-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\junit\arquillian-junit-core\1.1.0.Final\arquillian-junit-core-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-api\1.1.0.Final\arquillian-test-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-api\1.1.0.Final\arquillian-core-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-spi\1.1.0.Final\arquillian-test-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-spi\1.1.0.Final\arquillian-core-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-api\1.1.0.Final\arquillian-container-test-api-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-api\1.1.2\shrinkwrap-api-1.1.2.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-spi\1.1.0.Final\arquillian-container-test-spi-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\core\arquillian-core-impl-base\1.1.0.Final\arquillian-core-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\test\arquillian-test-impl-base\1.1.0.Final\arquillian-test-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-impl-base\1.1.0.Final\arquillian-container-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\config\arquillian-config-api\1.1.0.Final\arquillian-config-api-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\config\arquillian-config-impl-base\1.1.0.Final\arquillian-config-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-test-impl-base\1.1.0.Final\arquillian-container-test-impl-base-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-impl-base\1.1.2\shrinkwrap-impl-base-1.1.2.jar
m2\repository\org\jboss\shrinkwrap\shrinkwrap-spi\1.1.2\shrinkwrap-spi-1.1.2.jar
m2\repository\org\jboss\arquillian\protocol\arquillian-protocol-servlet\1.1.0.Final\arquillian-protocol-servlet-1.1.0.Final.jar
m2\repository\org\jboss\arquillian\container\arquillian-container-spi\1.1.0.Final\arquillian-container-spi-1.1.0.Final.jar
m2\repository\org\jboss\shrinkwrap\descriptors\shrinkwrap-descriptors-api-base\2.0.0-alpha-3\shrinkwrap-descriptors-api-base-2.0.0-alpha-3.jar
m2\repository\org\jboss\shrinkwrap\descriptors\shrinkwrap-descriptors-spi\2.0.0-alpha-3\shrinkwrap-descriptors-spi-2.0.0-alpha-3.jar

1 个答案:

答案 0 :(得分:0)

provider元素表示应该使用哪个JPA实现。 Hibernate Entity Manager由org.hibernate.jpa.HibernatePersistenceProvider字符串表示。如果未指定,则使用在引导时找到的第一个JPA实现。

如果您的类路径中有多个JPA实现提供程序(hibernate-entity-manager,eclipse-link,objectDb等),如果您明确要使用特定的JPA实现提供程序,那么它将选择第一个找到的JPA实现提供程序,然后您需要在provider中设置persistence.xml元素。