无法在Hibernate中加载Mapper类

时间:2016-10-29 11:52:24

标签: java hibernate

我对Hibernate很新。接下来是一个youtube教程,我创建了一个hibernate程序但是出错了。请在下面找到类和错误。对此的解决方案将非常感激。

错误:

INFO: HHH000115: Hibernate connection pool size: 20 (min=1)
Oct 29, 2016 4:36:53 AM org.hibernate.dialect.Dialect <init>
INFO: HHH000400: Using dialect: org.hibernate.dialect.MySQLDialect
Oct 29, 2016 4:36:53 AM org.hibernate.engine.jdbc.env.internal.LobCreatorBuilderImpl useContextualLobCreation
INFO: HHH000423: Disabling contextual LOB creation as JDBC driver reported JDBC version [3] less than 4
Exception in thread "main" org.hibernate.boot.registry.classloading.spi.ClassLoadingException: Unable to load class [Emp.hbm.xml]
    at org.hibernate.boot.registry.classloading.internal.ClassLoaderServiceImpl.classForName(ClassLoaderServiceImpl.java:229)
    at org.hibernate.boot.model.source.internal.annotations.AnnotationMetadataSourceProcessorImpl.<init>(AnnotationMetadataSourceProcessorImpl.java:104)

主要功能()

public static void main( String[ ] args ) throws ParseException {

   Configuration cfg = new Configuration();
   cfg.configure("Hibernate.cfg.xml");
   SessionFactory sf = cfg.buildSessionFactory();
   Session s = sf.openSession();
   Transaction tx = s.beginTransaction();

  String name2 = "yahoo";

  LoginRegister lr = new LoginRegister();
  lr.set_username(name2.toLowerCase()+"_user");
  lr.set_password(name2.toLowerCase()+"_pass");
  lr.set_last_update(new java.sql.Date(new SimpleDateFormat("yyyyMMdd").parse("20110210").getTime()));

  s.save(lr);
  s.flush();
  tx.commit();
  s.close();   
   }

POJO CLASS:

package dto;

import java.io.Serializable;
import java.sql.Date;


public class LoginRegister implements Serializable{

    private int _id;
    private String _username = null;
    private String _password = null;
    Date _last_update        = null;

    public LoginRegister(){}

    public int get_id() {
        return _id;
    }


    public void set_id(int _id) {
        this._id = _id;
    }

    public String get_username() {
        return _username;
    }

    public void set_username(String _username) {
        this._username = _username;
    }

    public String get_password() {
        return _password;
    }

    public void set_password(String _password) {
        this._password = _password;
    }

    public Date get_last_update() {
        return _last_update;
    }

    public void set_last_update(Date _last_update) {
        this._last_update = _last_update;
    }



    public String toString(){
        return 
                "Id             : "+this._id+"\n"+
                "Username       : "+this._username+"\n"+
                "Password       : "+this._password+"\n"+
                "Last Update    : "+this._last_update;
    }

}

配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration SYSTEM "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <!-- Database Connection -->
        <property name="connection.driver_class">com.mysql.jdbc.Driver</property>       <!-- Driver -->
        <property name="dialect">org.hibernate.dialect.MySQLDialect</property>          <!-- Language Used (Dialect) : Here SQL -->
        <property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!-- URL -->
        <property name="connection.username">root</property>                            <!-- Username -->
        <property name="connection.password"></property>                                <!-- Password -->
        <!-- To generate SQL Queries when running the program -->
        <property name="show_sql">true</property>
        <property name="format_sql">true</property>
        <property name="use_sql_comments">true</property>
        <!-- For JDBC Transaction -->
        <property name="hibernate.transaction.factory_class">org.hibernate.transaction.JDBCTransactionFactory</property>
        <!-- Auto Commit -->
        <property name="hibernate.connection.autocommit">false</property>
        <!-- Mapping Class -->
        <mapping class ="Emp.hbm.xml" />
    </session-factory>
</hibernate-configuration>

实体映射文件:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> 
<hibernate-mapping>
   <class name="qqqLoginRegister" table="qqqlogin_register">
      <id name="_id" column="id" type="integer">
         <generator class="assigned"/>
      </id>
      <property name="_userName" column="username" type="string"/>
      <property name="_password" column="password" type="string"/>
      <property name="_last_update" column="last_update" type="date"/>
   </class>
</hibernate-mapping>

地点:

配置文件:srs \ Hibernate.cfg.xml

实体映射器:src \ Emp.hbm.xml

POJO:src \ dto \ LoginRegister.java

主类:src \ dao \ Index.java

1 个答案:

答案 0 :(得分:2)

由于您没有使用Hibernate bean annoatations,在Hibernate.cfg.xml文件中,您需要将<mapping class ="Emp.hbm.xml" />更改为<mapping resource ="Emp.hbm.xml" />

Hibernate是一个ORM框架,它将Java Bean映射到Relational数据库表,映射可以直接在Java Bean Object中提供(使用Annotations),也可以通过xml文件单独提供(就像你做的那样)。 / p>

Hibernate SessionFactory映射是从各种XML映射文件编译的,<mapping resource用于加载那些映射文件(在您的情况下,它是一个单独的文件,即Emp.hbm.xml文件)

您可以参考以下文档以获取更多详细信息: https://docs.jboss.org/hibernate/core/3.3/reference/en/html/session-configuration.html