无法建立SessionFactory,休眠问题

我尝试了许多不同的Maven依赖项。我按照https://github.com/grpc/grpc/issues/20615的说明进行课程学习 仍然显示错误。 我做了一个经典的POJO类,叫做Model

这是我的pom.xml:


    <?xml version="1.0" encoding="UTF-8"?>
    <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.mha</groupId>
        <artifactId>databasemodels</artifactId>
        <version>1.0-snAPSHOT</version>
        <packaging>jar</packaging>

        <properties>
            <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
            <java.version>11</java.version>
            <junit.version>4.12</junit.version>
        </properties>

        <dependencies>
            <!-- test -->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>com.h2database</groupId>
                <artifactId>h2</artifactId>
                <version>1.4.197</version>
            </dependency>

            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>
                <version>5.4.0.Final</version>
            </dependency>
            <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-annotations -->
            <dependency>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-annotations</artifactId>
                <version>3.5.6-Final</version>
            </dependency>

        </dependencies>

        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-jar-plugin</artifactId>
                    <version>3.1.1</version>
                    <configuration>
                    <archive>
                        <manifest>
                            <mainClass>ManageModel</mainClass>
                        </manifest>
                    </archive>
                </configuration>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.0</version>
                    <configuration>
                        <source>${java.version}</source>
                        <target>${java.version}</target>

                    </configuration>
                </plugin>
                <plugin>
                    <groupId>org.flywaydb</groupId>
                    <artifactId>flyway-maven-plugin</artifactId>
                    <version>5.2.4</version>
                    <configuration>
                        <url>jdbc:h2:file:./dataBaseModels</url>
                        <user>sa</user>
                    </configuration>
                </plugin>
            </plugins>
        </build>

    </project>

这是会产生错误的类:


    import org.hibernate.hibernateexception;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Annotationconfiguration;
    import org.hibernate.SessionFactory;

    import java.util.Iterator;
    import java.util.List;

    public class ManageModel {
        private static SessionFactory factory;

        public static void main(String[] args) {

            try{
                factory = new Annotationconfiguration().configure().
                        addAnnotatedClass(Model.class).
                        buildSessionFactory();
            }catch (Throwable exc){
                System.err.println("Failed to create SessionFactory object " + exc);
                throw new ExceptionInInitializerError(exc);
            }

            ManageModel MM = new ManageModel();
            MM.modelList();
        }

        public void modelList(){
            Session session = factory.openSession();
            Transaction tx = null;

            try{
                tx = session.beginTransaction();
                List models = session.createQuery("FROM Model").list();
                for(Iterator iterator = models.iterator(); iterator.hasnext();){
                    Model model = (Model) iterator.next();
                    System.out.print("Name: " + model.getName());
                    System.out.print(" Surname:" + model.getSurname());
                    System.out.print(" Height:" + model.getHeight());
                    System.out.print(" Url:" + model.getUrl());
                }
                tx.commit();
            }catch (hibernateexception he){
                if(tx != null)
                    tx.rollback();
                he.printStackTrace();
            }finally {
                session.close();
            }
        }

    }

这是我的hibernate.cfg.xml:

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">org.h2.Driver</property>
        <property name="connection.url">jdbc:h2:file:C:\Users\mhoja\Desktop\2020\MASTERCLASS\databasemodels\dataBaseModels</property>
        <property name="connection.username">sa</property>


        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>

        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.H2Dialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name="show_sql">true</property>

        <!-- Drop and re-create the database schema on startup -->
        <property name="hbm2ddl.auto">validate</property>

        <mapping class= "Model"/>

    </session-factory>
</hibernate-configuration>

错误:

Failed to create SessionFactory object java.lang.NoClassDefFoundError: org/hibernate/cfg/Mappings
Exception in thread "main" java.lang.ExceptionInInitializerError
    at ManageModel.main(ManageModel.java:21)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/cfg/Mappings
    at java.base/java.lang.ClassLoader.defineclass1(Native Method)
    at java.base/java.lang.ClassLoader.defineclass(ClassLoader.java:1016)
    at java.base/java.security.SecureclassLoader.defineclass(SecureclassLoader.java:174)
    at java.base/jdk.internal.loader.BuiltinClassLoader.defineclass(BuiltinClassLoader.java:802)
    at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClasspathOrNull(BuiltinClassLoader.java:700)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:623)
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    at ManageModel.main(ManageModel.java:16)
Caused by: java.lang.ClassnotFoundException: org.hibernate.cfg.Mappings
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 10 more

Process finished with exit code 1
ZXY199 回答:无法建立SessionFactory,休眠问题

选择单个版本的休眠。您的pom.xml混合了来自不同版本的工件。

本文链接:https://www.f2er.com/3107379.html

大家都在问