当前位置: 首页 > 知识库问答 >
问题:

向Hibernate.cfg.xml添加hbm标记时出现Hibernate错误

司寇高峯
2023-03-14

您好,我是Hibernate的新手,我正在试图理解它是如何工作的,所以我制作了一个servlet来用Hibernate建立到DB的连接。在向configuration.cfg.xml添加一个hbm文件之前,一切都很好。我无法解释为什么当我添加这个时servlet会崩溃。

我的目录如下:

hibernate.cfg.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>


                <!-- Database connection settings -->
         <property name="hibernate.dialect">org.hibernate.dialect.DerbyDialect</property>
    <property name="hibernate.connection.driver_class">org.apache.derby.jdbc.ClientDriver</property>
    <property name="hibernate.connection.url">jdbc:derby://localhost:3306/realestate</property>
    <property name="hibernate.connection.username">test</property>
    <property name="hibernate.connection.password"></property>
    <property name="hibernate.show_sql">true</property>
    <property name="hibernate.format_sql">true</property>
    <property name="hibernate.current_session_context_class">thread</property>
    <property name="hibernate.query.factory_class">org.hibernate.hql.internal.classic.ClassicQueryTranslatorFactory</property>

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

        <!-- SQL dialect -->
        <property name='dialect'>org.hibernate.dialect.MySQLDialect</property>

        <!-- Echo all executed SQL to stdout -->
        <property name='show_sql'>true</property>
        <!-- JDBC connection pool (use the built-in) -->
        <property name="connection.pool_size">1</property>
         <--without the below line works fine-->
        <mapping resource="Entities/Users.hbm.xml"/>
    </session-factory>
</hibernate-configuration>
CREATE TABLE IF NOT EXISTS `realEstate`.`Users` (
  `user_id` INT NOT NULL AUTO_INCREMENT,
  `Username` VARCHAR(45) NULL,
  `Password` VARCHAR(45) NULL,
  `RegistrationDate` VARCHAR(15) NULL,
  `Name` VARCHAR(45) NULL,
  `Surname` VARCHAR(45) NULL,
  `Phone` VARCHAR(45) NULL,
  `Email` VARCHAR(45) NULL,
  `Registered` TINYINT(1) NULL,
  PRIMARY KEY (`user_id`),
  UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC))
ENGINE = InnoDB;
     package Entities;

    public class Users {
        private int user_id;
        private String username;
        private String password;
        private String date;
        private String name;
        private String surname;
        private String phone;
        private String email;
        private boolean registered;

        public int getUser_id() {
            return user_id;
        }
        public void setUser_id(int user_id) {
            this.user_id = user_id;
        }
        public String getUsername() {
            return username;
        }
        public void setUsername(String username) {
            this.username = username;
        }
        public String getPassword() {
            return password;
        }
        public void setPassword(String password) {
            this.password = password;
        }
        public String getDate() {
            return date;
        }
        public void setDate(String date) {
            this.date = date;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getSurname() {
            return surname;
        }
        public void setSurname(String surname) {
            this.surname = surname;
        }
        public String getPhone() {
            return phone;
        }
        public void setPhone(String phone) {
            this.phone = phone;
        }
        public String getEmail() {
            return email;
        }
        public void setEmail(String email) {
            this.email = email;
        }
        public boolean getRegistered() {
            return registered;
        }
        public void setRegistered(boolean registered) {
            this.registered = registered;
        }

}
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
    <class name="entities.Users" table="USERS">
        <id name="user_id" type="int">
            <column name="user_id" />
            <generator class="assigned" />
        </id>
        <property name="username" type="java.lang.String">
            <column name="Username" length="45"/>
        </property>
        <property name="password" type="java.lang.String">
            <column name="Password" length="45" />
        </property>
        <property name="name" type="java.lang.String">
            <column name="Name" length="45"/>
        </property>
         <property name="date" type="java.lang.String">
            <column name="RegistrationDate" length="45"/>
        </property>
        <property name="surname" type="java.lang.String">
            <column name="Surname" length="45"/>
        </property>
        <property name="phone" type="java.lang.String">
            <column name="Phone" length="45"/>
        </property>
        <property name="email" type="java.lang.String">
            <column name="Email" length="45"/>
        </property>
        <property name="registered" type="boolean">
            <column name="Registered" />
        </property>
    </class>
</hibernate-mapping>

编辑:下面是stacktrace类型异常报告

实例化servlet类servlets.a的消息错误

说明服务器遇到一个内部错误,使其无法满足此请求。

根本原因

java.lang.exceptioninInitializerError hibernate.hibernateUtil.(hibernateUtil.java:22)servlets.a.(a.java:35)sun.reflect.nativeConstructorAccessorImpl.newinstance0(原生方法)sun.reflect.nativeConstructorAccessorImpl.newinstance(未知源)sun.reflect.nativeConstructorAccessorImpl.newinstance(未知源)sun.reflect.delecting ve.invoke(ErrorReportValve.java:79)org.apache.catalina.valves.abstractAccessLogValve.invoke(AbstractAccessLogValve.java:610)org.apache.catalina.connector.coyoteAdapter.Service(CoyoteAdapter.java:526)org.apache.coyote.http11.abstractThtp11Processor.Process(AbstractThtp11Processor.Process(AbstractThtprotocol$AbstractConnonhandler.process(http11nioProtocol.java:222)org.apache.tomcat.util.net.nioEndpoint$socketprocessor.dorun(NioEndpoint.java:1566)org.apache.tomcat.util.net.nioEndpoint$socketprocessor.run(NioEndpoint.java:1523)java.util.concurrent.threadpoolexecutor.run(nioEndpoint.java:1523)java.util.concurrent来源)

根本原因

verifyError:类org.hibernate.type.WrappdMaterializedBlobType重写最终方法getReturdClass.()ljava/lang/class;defineClass1(Native Method)java.lang.classloader.defineClass(未知源)java.security.secureClassLoader.defineClass(未知源)org.apache.catalina.loader.webappClassLoader.findClassInternal(webappClassLoader.java:2479)org.apache.catalina.loader.webappClassLoader.findClass type.basicTyperegistry.(basicTyperegistry.java:91)org.hibernate.type.typeresolver.(typeresolver.java:59)org.hibernate.cfg.comfiguration.(configuration.java:250)org.hibernate.cfg.comfiguration.(configuration.java:302)org.hibernate.cfg.comfiguration.(configuration.java:168)hibernate.cfg.annotationconfiguration.(实例(未知源)sun.reflect.delegatingconstructoraccessorimpl.newinstance(未知源)java.lang.reflect.constructor.newinstance(未知源)java.lang.class.newinstance(未知源)java.lang.class.newinstance(未知源)org.apache.catalina.authenticator.authenticator.authenticatorbase.invoke(processor.process(AbstractHttp11Processor.java:1078)org.apache.coyote.abstractConnectionHandler.process(AbstractProtocol.java:655)ncurrent.threadpoolexecutor.runworker(未知源)java.util.concurrent.threadpoolexecutor$worker.run(未知源)org.apache.tomcat.util.threads.taskthread$wrappingrunnable.run(taskthread.java:61)java.lang.thread.run(未知源)

注意:根本原因的完整堆栈跟踪可在Apache Tomcat/8.0.9日志中获得。

共有1个答案

闻枫
2023-03-14

在映射文件中,类名应该是“entities.users”,而不是“entities.user”。我宁愿使用“users”并指定像 这样的包,但我非常怀疑这是否会导致问题。你能提供错误的stacktrace吗?

 类似资料:
  • 我正在尝试使用以下方法将元素添加到名为activList的ArrayList中: 但是我在运行代码时在这一行得到了一个NullPointerExcema: 我确实读过这一页:什么是NullPointerException,如何修复它?(请不要重复报告) 我所理解的是,我得到错误是因为我的ArrayList没有任何元素。但是,我尝试在创建后立即添加一个,如下所示: 但我得到了一个错误:“意外标记:(

  • 每当用户在JOptionPane确认对话框的帮助下被询问是否将产品添加到购物车时选择“是”,我都会尝试将行添加到我的表中。我的代码如下: 然而,我得到了这个错误:线程“AWT-EventQueue-0”java.lang.ClassCastException:javax.swing中出现异常。JTable$1无法强制转换为javax.swing.table.DefaultTableModel 有人

  • 我有一个比较简单的问题,就是尝试将内联脚本添加到React组件中。我目前所掌握的: 我还尝试过: 这两种方法似乎都无法执行所需的脚本。我想我错过的是一件简单的事。有人能帮忙吗? PS:忽略foobar,我有一个真实的id实际上在使用,我不想分享。

  • package.json: 我还为数据库设置了如下规则:

  • 我正在使用entityMenager登录,并没事。

  • 我试图添加ALT标签到我的网站上的自定义船旋转木马和船页面。不知道我需要添加什么PHP以及把它放在哪里。旋转木马和页面上的图像都是缩略图。 我有一页。php和boat_旋转木马。php,这是我认为需要添加代码的地方。 不确定我是否应该将所有代码添加到此帖子。 这是指向该页面的链接https://www.embarkboathire.com.au/boats/ 你可以看到底部的船,每页有15艘。 }