Java “线程中的异常”;“主要”;org.hibernate.MappingException

Java “线程中的异常”;“主要”;org.hibernate.MappingException,java,hibernate,Java,Hibernate,测试: 冬眠能力: import java.util.GregorianCalendar; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import it.s.monitoringDoor.model.Door_Open; import it.s.monitoringDoor.model.HibernateUtilities; pu

测试:


冬眠能力:

import java.util.GregorianCalendar;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;

import it.s.monitoringDoor.model.Door_Open;
import it.s.monitoringDoor.model.HibernateUtilities;

public class TestHibernate {
    public static void main(String[] args){
        SessionFactory factory = HibernateUtilities.getSessionFactory();

        Door_Open d = new Door_Open();
        d.setId(1);
        d.setId_door(1);;
        d.setTimestamp(getTime());

        Session s = factory.openSession();

        Transaction t = s.getTransaction();
        t.begin();
        s.save(d);
        t.commit();


    }
    private static Date getTime(){
        GregorianCalendar gc = new GregorianCalendar();
        return gc.getTime(); 
    }

}

Pojo类Door_Open.java

package it.s.monitoringDoor.model;

import java.util.Properties;

import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;

public class HibernateUtilities {

    //XML based configuration
    private static SessionFactory sessionFactory;


    private static SessionFactory buildSessionFactory() {
        try {
            // Create the SessionFactory from hibernate.cfg.xml
            Configuration configuration = new Configuration();
            configuration.configure("hibernate.cfg.xml");
            System.out.println("Hibernate Configuration loaded");

            ServiceRegistry serviceRegistry = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
            System.out.println("Hibernate serviceRegistry created");

            SessionFactory sessionFactory = configuration.buildSessionFactory(serviceRegistry);

            return sessionFactory;
        }
        catch (Throwable ex) {
            // Make sure you log the exception, as it might be swallowed
            System.err.println("Initial SessionFactory creation failed." + ex);
            throw new ExceptionInInitializerError(ex);
        }
    }


    public static SessionFactory getSessionFactory() {
        if(sessionFactory == null)
            sessionFactory = buildSessionFactory();
        return sessionFactory;
    }

}

hibernate.cfg.xml

    package it.selco.monitoringDoor.model;

import java.util.Date;

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

    @Entity
    @Table(name = "door_open")
    public class Door_Open {
        //---------------- Instance variables ----------------
        @Id
        @GeneratedValue
        @Column(name = "id")
        private int id;
        @Column(name = "id_door", nullable = false)
        private int id_door;
        @Column(name = "id_door", nullable = false)
        private Date timestamp;

        //-------------------- Constructor --------------------
        public Door_Open (){
            ;
        }

        public Door_Open(int id_door, Date timestamp) {
            setId_door(id_door);
            setTimestamp(timestamp);
        }


        //--------------------- Get & Set ---------------------

        public int getId() {
            return id;
        }


        public void setId(int id) {
            this.id = id;
        }

        @SuppressWarnings("unused")
        private int getId_door() {
            return id_door;
        }

        public void setId_door(int id_door) {
            this.id_door = id_door;
        }

        @SuppressWarnings("unused")
        private Date getTimestamp() {
            return timestamp;
        }

        public void setTimestamp(Date timestamp) {
            this.timestamp = timestamp;
        }

        //--------------------- Methods ----------------------
        //TODO Auto-generated methods variables block

    }

com.mysql.jdbc.Driver
jdbc:mysql://localhost/monitor_door
根
org.hibernate.dialogue.mysqldialogue

Door_Open.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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 name="">
  <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
  <property name="hibernate.connection.url">jdbc:mysql://localhost/monitor_door</property>
  <property name="hibernate.connection.username">root</property>
  <property name="hibernate.connection.password"/>
  <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
  <!-- ############################################ 
 # mapping files with external dependencies # 
 ############################################ -->
  <mapping resource="it/s/monitoringDoor/model/Door_Open.hbm.xml"/>
 </session-factory>
</hibernate-configuration>

当我运行测试时,返回给我以下错误

线程“main”org.hibernate.MappingException中的异常:未知实体:it.s.monitoringDoor.model.Door\u Open [……]


一些建议?

看看你的
Door\u Open
类的包,它是:
it.selco.monitoringDoor.model
而在
hibernate.cfg.xml
中,
Door\u Open.hbm.xml
文件位于:
。包和映射资源路径不匹配,它们应该相同,例如
it/selco/monitoringDoor/model/Door\u Open.hbm.xml
当然,将
Door\u Open.hbm.xml
移动到与其类相同的路径中

希望这有帮助


顺便问一下,为什么要在类中同时使用注释(例如@Entity)和hbm映射?我认为你应该选择一个,而不是两个都选。

你是否尝试过逐步完成该计划?异常发生在哪里?您是否能够进一步定位错误?您应该提供一个“最小的完整工作示例”,而不是完整的程序,只需询问“错误在哪里?”
<?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="Door_Open" table="door_open" schema="monitor_door">
      <id name="id" type="int" column="id">
         <generator class="native"/>
      </id>
      <property name="id_door" column="id_door" type="int" not-null="true"/>
      <property name="timestamp" column="timestamp" type="timestamp" not-null="true"/>
   </class>
</hibernate-mapping>