简体   繁体   English

创建SessionFactory失败,Hibernate问题

[英]Failed to create SessionFactory, Hibernate problem

I tried many different maven dependencies.我尝试了许多不同的 maven 依赖项。 I made my classes like in the instruction from https://www.tutorialspoint.com/hibernate/hibernate_annotations.htm Still error show up.我按照https://www.tutorialspoint.com/hibernate/hibernate_annotations.htm的说明制作了我的课程,但仍然出现错误。 I made my classic POJO class called Model我将我的经典 POJO class 称为 Model

So this is my pom.xml:所以这是我的 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>

This is class that generate errors:这是产生错误的 class:


    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();
            }
        }

    }

This is my hibernate.cfg.xml:这是我的 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>

And the error:和错误:

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

Choose a single version of hibernate.选择 hibernate 的单个版本。 Your pom.xml is mixing artifacts from different versions.您的 pom.xml 混合了来自不同版本的工件。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM