如何使用休眠将mysql与Java连接?例外:没有名为 org.hibernate.tutorial_jpa 的 EntityManager 的持久性提供程序 [关闭]

Posted

技术标签:

【中文标题】如何使用休眠将mysql与Java连接?例外:没有名为 org.hibernate.tutorial_jpa 的 EntityManager 的持久性提供程序 [关闭]【英文标题】:How to connect mysql with Java using hibernate? Exception:No Persistence provider for EntityManager named org.hibernate.tutorial_jpa [closed] 【发布时间】:2022-01-17 15:25:49 【问题描述】:

一开始我想写一个简单的程序,用 Java 连接到 mysql,使用 hibernate。程序找不到 EntityManager 的持久性提供程序。不幸的是,仍然有一些例外。此时,它们是这样的:

目前的例外情况:

"C:\Program Files\Java\jdk-17.0.1\bin\java.exe" "-javaagent:D:\IntelliJ IDEA Community Edition 2021.2.2\lib\idea_rt.jar=53702:D:\IntelliJ IDEA Community Edition 2021.2.2\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\User\.m2\repository\org\hibernate\hibernate-core\5.4.1.Final\hibernate-core-5.4.1.Final.jar;C:\Users\User\.m2\repository\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;C:\Users\User\.m2\repository\org\javassist\javassist\3.24.0-GA\javassist-3.24.0-GA.jar;C:\Users\User\.m2\repository\net\bytebuddy\byte-buddy\1.9.5\byte-buddy-1.9.5.jar;C:\Users\User\.m2\repository\antlr\antlr\2.7.7\antlr-2.7.7.jar;C:\Users\User\.m2\repository\org\jboss\spec\javax\transaction\jboss-transaction-api_1.2_spec\1.1.1.Final\jboss-transaction-api_1.2_spec-1.1.1.Final.jar;C:\Users\User\.m2\repository\org\jboss\jandex\2.0.5.Final\jandex-2.0.5.Final.jar;C:\Users\User\.m2\repository\com\fasterxml\classmate\1.3.4\classmate-1.3.4.jar;C:\Users\User\.m2\repository\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;C:\Users\User\.m2\repository\org\dom4j\dom4j\2.1.1\dom4j-2.1.1.jar;C:\Users\User\.m2\repository\org\hibernate\common\hibernate-commons-annotations\5.1.0.Final\hibernate-commons-annotations-5.1.0.Final.jar;C:\Users\User\.m2\repository\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;C:\Users\User\.m2\repository\org\glassfish\jaxb\jaxb-runtime\2.3.1\jaxb-runtime-2.3.1.jar;C:\Users\User\.m2\repository\org\glassfish\jaxb\txw2\2.3.1\txw2-2.3.1.jar;C:\Users\User\.m2\repository\com\sun\istack\istack-commons-runtime\3.0.7\istack-commons-runtime-3.0.7.jar;C:\Users\User\.m2\repository\org\jvnet\staxex\stax-ex\1.8\stax-ex-1.8.jar;C:\Users\User\.m2\repository\com\sun\xml\fastinfoset\FastInfoset\1.2.15\FastInfoset-1.2.15.jar;C:\Users\User\.m2\repository\org\hibernate\hibernate-entitymanager\5.4.1.Final\hibernate-entitymanager-5.4.1.Final.jar;C:\Users\User\.m2\repository\mysql\mysql-connector-java\5.1.47\mysql-connector-java-5.1.47.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-controls\17-ea+11\javafx-controls-17-ea+11.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-graphics\17-ea+11\javafx-graphics-17-ea+11.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-base\17-ea+11\javafx-base-17-ea+11.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-fxml\17-ea+11\javafx-fxml-17-ea+11.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-web\17-ea+11\javafx-web-17-ea+11.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-media\17-ea+11\javafx-media-17-ea+11.jar;C:\Users\User\.m2\repository\org\springframework\spring-beans\3.2.0.RELEASE\spring-beans-3.2.0.RELEASE.jar;C:\Users\User\.m2\repository\org\springframework\spring-core\3.2.0.RELEASE\spring-core-3.2.0.RELEASE.jar;C:\Users\User\.m2\repository\commons-logging\commons-logging\1.1.1\commons-logging-1.1.1.jar -p C:\Users\User\.m2\repository\org\openjfx\javafx-media\17-ea+11\javafx-media-17-ea+11-win.jar;C:\Users\User\.m2\repository\org\kordamp\ikonli\ikonli-core\12.2.0\ikonli-core-12.2.0.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-web\17-ea+11\javafx-web-17-ea+11-win.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-fxml\17-ea+11\javafx-fxml-17-ea+11-win.jar;C:\Users\User\.m2\repository\org\kordamp\ikonli\ikonli-javafx\12.2.0\ikonli-javafx-12.2.0.jar;C:\Users\User\.m2\repository\eu\hansolo\tilesfx\11.48\tilesfx-11.48.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-base\17-ea+11\javafx-base-17-ea+11-win.jar;C:\Users\User\.m2\repository\javax\persistence\javax.persistence-api\2.2\javax.persistence-api-2.2.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-controls\17-ea+11\javafx-controls-17-ea+11-win.jar;C:\Users\User\.m2\repository\net\synedra\validatorfx\0.1.13\validatorfx-0.1.13.jar;C:\Users\User\Desktop\Uczelnia\Java\demo1232\target\classes;C:\Users\User\.m2\repository\org\controlsfx\controlsfx\11.1.0\controlsfx-11.1.0.jar;C:\Users\User\.m2\repository\com\dlsc\formsfx\formsfx-core\11.3.2\formsfx-core-11.3.2.jar;C:\Users\User\.m2\repository\org\kordamp\bootstrapfx\bootstrapfx-core\0.4.0\bootstrapfx-core-0.4.0.jar;C:\Users\User\.m2\repository\org\openjfx\javafx-graphics\17-ea+11\javafx-graphics-17-ea+11-win.jar -m lab2.dziennik/lab2.dziennik.Main
java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:467)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:366)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071)
Caused by: javax.persistence.PersistenceException: No Persistence provider for EntityManager named org.hibernate.tutorial_jpa
    at java.persistence@2.2/javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:85)
    at java.persistence@2.2/javax.persistence.Persistence.createEntityManagerFactory(Persistence.java:54)
    at lab2.dziennik/lab2.dziennik.Main.main(Main.java:26)
    ... 11 more
Exception running application lab2.dziennik.Main

Process finished with exit code 1

我的代码:

peristence.xml:

<?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="org.hibernate.tutorial.jpa">
        <provider>org.hibernate.ejb.HibernatePersistenceProvider</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="Kacper"/>
            <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"/>
        </properties>
    </persistence-unit>
</persistence>
主要:

 public static void main(String[] args) 
        EntityManagerFactory e = Persistence.createEntityManagerFactory("org.hibernate.tutorial.jpa");
        testBaza1 t = new testBaza1();
        t.setId(2);
        t.setNazwa("bob");

        testBaza t1 = new testBaza();
        t1.setNazwa("xxx");


        EntityManager e1 = e.createEntityManager();
        e1.persist(t);
        e1.persist(t1);
        e1.getTransaction().commit();
        
        e.close();
    
testBaza:

package lab2.dziennik;
import javax.persistence.*;

@Entity
@Table(name="TEST")
public class testBaza 
    @Id
    @Column(name="id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    public Integer getId()
    
        return id;
    

    public void setId(int id1)
        id=id1;
    

    @Column(name="nazwa")
    private String nazwa;

    public String getNazwa()
    
        return nazwa;
    

    public void setNazwa(String n)
        nazwa=n;
    


testBaza1

package lab2.dziennik;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name="TEST1")
public class testBaza1 
    @Id
    @Column(name="id")
    private Integer id;

    public Integer getId()
    
        return id;
    

    public void setId(int id1)
        id=id1;
    

    @Column(name="nazwa")
    private String nazwa;

    public String getNazwa()
    
        return nazwa;
    

    public void setNazwa(String n)
        nazwa=n;
    
maven 依赖:

<dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-entitymanager</artifactId>
            <version>5.4.1.Final</version>
        </dependency>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>

请帮忙。

【问题讨论】:

Please do not upload images of code/errors when asking a question. 好的,我希望帖子透明。下次我会考虑的。 代替图片将其添加为文本。 好的,但我有异常:INFO: HHH000318: 像以前一样在类路径中找不到任何 META-INF/persistence.xml 文件。 将您的例外情况和任何其他信息添加到您的问题中,而不是作为 cmets 或图像。 【参考方案1】:

“驱动程序”类? - 我没有仔细阅读完整的堆栈跟踪,因为它很难阅读:) 你能不能把它写成代码? :)

尝试更改“驱动程序”->“驱动程序”

还有一些驱动需要setter,并且需要正确编写:

【讨论】:

哦,好吧,我更正了,但继续抛出异常。 我已经更新了我帖子中的例外情况:) 您可以尝试公开这些字段。我不知道为什么我有负面评价 - 如果有人能解释一下.. 我也是新来的 :)

以上是关于如何使用休眠将mysql与Java连接?例外:没有名为 org.hibernate.tutorial_jpa 的 EntityManager 的持久性提供程序 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

休眠关闭 MySQL 连接

使用 Spring 应用程序中的休眠将表情符号 unicode 字符保存在 mysql 数据库中

如何使用 netbeans 将 javadb 或 hsqldb 嵌入到带有休眠的 java 应用程序中?

MySQL休眠异常

如何将MySQL服务器连接到工作台

如何将Mysql中的位类型映射到休眠?