JPA с использованием Mysql / Oracle - нет поставщика сохраняемости для EntityManager - PullRequest
0 голосов
/ 13 июня 2018

Я немного новичок и несколько дней пытался связать свой код Hibernate с базой данных, но безуспешно.Это ошибка, которую я получаю:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named TestMySqlHibernate
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
at testDummyEntrance.DummyInterface.main(DummyInterface.java:17)

Файл persistence.xml

<persistence-unit name="TestMySqlHibernate">
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <properties>
        <property name="javax.persistence.jdbc.driver"
            value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:mysql://localhost:3306/testalan" />
        <property name="javax.persistence.jdbc.user" value="alan" />
        <property name="javax.persistence.jdbc.password"
            value="password" />

        <property name="hibernate.dialect"
            value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>
</persistence-unit>

Функция-пустышка:

public static void main(String[] args) {


    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("TestMySqlHibernate");
    EntityManager em=entityManagerFactory.createEntityManager();
    em.close();
    System.out.println("Done");
}

Я также проверил, что файл persistence.xml правильно расположен в src / main / resources / META-INF и включен в путь сборки.

Возможно, я делаю что-то ужасно глупое, но яне могу понять, что это может быть.Я проверил около 10 возможностей и до сих пор так же.Если это поможет, я могу подключиться к Data Source Explorer и попробовать Oracle и MySql.

Используя последнюю версию MySql и драйвер 8.0.11, все локально, на одном компьютере.

Я могу опубликовать POM.xml или любые другие данные, если это поможет.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javavids.hibernate.tests</groupId>
<artifactId>testHibernateMaven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>5.3.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>5.3.1.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.persistence</groupId>
        <artifactId>javax.persistence-api</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.javax.persistence</groupId>
        <artifactId>hibernate-jpa-2.1-api</artifactId>
        <version>1.0.2.Final</version>
    </dependency>
    <dependency>
        <groupId>javax.ejb</groupId>
        <artifactId>ejb-api</artifactId>
        <version>3.0</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate.common</groupId>
        <artifactId>hibernate-commons-annotations</artifactId>
        <version>5.0.3.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.shrinkwrap.resolver</groupId>
        <artifactId>shrinkwrap-resolver-bom</artifactId>
        <version>3.1.3</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian</groupId>
        <artifactId>arquillian-bom</artifactId>
        <version>1.4.0.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.mockito</groupId>
        <artifactId>mockito-core</artifactId>
        <version>2.18.3</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.bom</groupId>
        <artifactId>jboss-javaee-6.0-with-hibernate</artifactId>
        <version>1.0.7.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.bom</groupId>
        <artifactId>jboss-javaee-6.0-with-tools</artifactId>
        <version>1.0.7.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.bom</groupId>
        <artifactId>
                jboss-javaee-6.0-with-transactions
            </artifactId>
        <version>1.0.7.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>org.jboss.bom</groupId>
        <artifactId>jboss-javaee-6.0-with-logging</artifactId>
        <version>1.0.7.Final</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>20040616</version>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>20030211.134440</version>
    </dependency>
    <dependency>
        <groupId>commons-logging</groupId>
        <artifactId>commons-logging</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-jboss-modules</artifactId>
        <version>4.0.0.Beta3</version>
        <type>pom</type>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
    </dependency>
    <dependency>
        <groupId>joda-time</groupId>
        <artifactId>joda-time</artifactId>
        <version>2.9.7</version>
    </dependency>
</dependencies>
<dependencyManagement>
    <dependencies>

    </dependencies>
</dependencyManagement>

1 Ответ

0 голосов
/ 14 июня 2018

Благодаря помощи @SimonMartinelli я его нашел.Кроме того, предложение @ K.Nicholas является правильным, тип ресурса не является JTA и должен быть уточнен.Престижность им.

Полученный файл persistence.xml выглядит следующим образом:

<persistence-unit name="TestMySqlHibernate" transaction-type="RESOURCE_LOCAL">
    <properties>
        <property name="javax.persistence.jdbc.driver"
            value="com.mysql.jdbc.Driver" />
        <property name="javax.persistence.jdbc.url"
            value="jdbc:mysql://localhost:3306/testalan?useUnicode=true&amp;useJDBCCompliantTimezoneShift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/>
        <property name="javax.persistence.jdbc.user" value="alan" />
        <property name="javax.persistence.jdbc.password"
            value="password" />

        <property name="hibernate.dialect"
            value="org.hibernate.dialect.MySQLDialect" />
        <property name="hibernate.show_sql" value="true" />
        <property name="hibernate.hbm2ddl.auto" value="create" />
    </properties>
</persistence-unit>

Обратите внимание на их изменения (удалите тег провайдера и добавьте свойство типа транзакции) идобавление UTC, которое я должен был сделать, используя MySQL.

Не уверен, имеет ли какое-то отношение версия драйвера или что, но тег провайдера является прерывателем времени выполнения с драйвером 8.0.11.

Спасибо за решение, ребята, вы решили мою головную боль!

РЕДАКТИРОВАТЬ: Как новичок ... как я могу голосовать за ваши ответы как положительные?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...