Ошибки гибернации: нет поставщика сохраняемости для EntityManager с именем my-unit - PullRequest
0 голосов
/ 13 марта 2020

Я пытался поместить свой persistence.xml в различные части моего Java проекта, и я вызываю его с помощью этой команды:

EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("my-unit");

, но он возвращает мне ошибку:

Exception in thread "main" javax.persistence.PersistenceException: No Persistence provider for EntityManager named my-unit
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:69)
at javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:47)
at main.MainClass.main(MainClass.java:81)
Process finished with exit code 1

мой persistence.xml файл:

<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" 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">
<persistence-unit name="my-unit">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>

    <properties>
        <property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/test"/>
        <property name="hibernate.connection.autocommit" value="false"/>
        <property name="hibernate.connection.username" value="root"/>
        <property name="hibernate.connection.password" value=""/>
        <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/>
        <property name="hibernate.connection.CharSet" value="utf8"/>
        <property name="hibernate.connection.characterEncoding" value="utf8"/>
        <property name="hibernate.connection.useUnicode" value="true"/>
        <property name="hibernate.show_sql" value="true"/>
        <property name="hibernate.hbm2ddl.auto" value="update"/>
        <!-- use encache provider-->
        <!--<property name="hibernate.cache.region.factory_class"-->
        <!--value="org.hibernate.cache.ehcache.EhCacheRegionFactory"/>-->
        <!--<property name="hibernate.javax.cache.provider" value="org.ehcache.jsr107.EhcacheCachingProvider"/>-->
        <!--&lt;!&ndash;use second level cache&ndash;&gt;-->
        <!--<property name="hibernate.cache.use_second_level_cache" value="true"/>-->
        <!--&lt;!&ndash;use 3rd level cache&ndash;&gt;-->
        <!--<property name="hibernate.cache.use_query_cache" value="true"/>-->
    </properties>
</persistence-unit>

Я использую IntelliJ в качестве IDE для Java, а файл persistence.xml находится в папке META-INF в resources папка, я попытался проверить структуру проекта, и все выглядит хорошо. Я использую Hibernate в качестве хранилища Maven. Спасибо за помощь

1 Ответ

0 голосов
/ 13 марта 2020

Вам необходимо определить имя поставщика постоянства

<provider>org.hibernate.ejb.HibernatePersistence</provider>

Это решит проблему.

...