Hibernate映射错误 - 未知实体

时间:2010-12-01 09:51:36

标签: java hibernate

我是一个休眠的新手,我在尝试持久化对象时收到此错误 -

错误 - >未知实体:org.apache.struts.register.model.Event

在我的hibernate.cfg.xml中,我将我的映射定义为

<mapping class="org.apache.struts.register.model.Event"/>

我的活动课程 -

package org.apache.struts.register.model;

import org.hibernate.annotations.Entity;


import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.GeneratedValue;
import javax.persistence.Table;

@Entity
@Table (name="event")

public class Event {

    @Id
    @GeneratedValue ( strategy =  GenerationType.AUTO)
 private int eventId;
 private String eventName;
 private String eventDescription;

 public String getEventName() {
  return eventName;
 }

 public void setEventName(String eventName) {
  this.eventName = eventName;
 }

 public String getEventDescription() {
  return eventDescription;
 }

 public void setEventDescription(String eventDescription) {
  this.eventDescription = eventDescription;
 }

 public String toString(){
  return this.eventName + "," + this.eventDescription;
 }

}

EventDAO -

package dao;


import org.apache.struts.register.model.Event;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;


public class EventDAO {

    public static boolean registerEvent(Event u) {

         SessionFactory sf = HibernateUtil.getSessionFactory();
         Transaction t = null;
         try  {
         Session s  = sf.openSession();
         t = s.beginTransaction(); // start a new transaction
         s.persist(u);
         t.commit();  // commit transaction 
         return true;
         }
         catch(Exception ex) {
             System.err.println("Error -->"  + ex.getMessage());
             if ( t!=null) t.rollback();  // rollback transaction on exception 
             return false;
         }
    }
}

System.err.println("Error -->" + ex.getMessage()),是抛出异常的行。

感谢。

2 个答案:

答案 0 :(得分:5)

import org.hibernate.annotations.Entity;

hibernate @Entity不足以让你的实体被发现。请改用javax.persistence.Entity

See here

  

@ javax.persistence.Entity仍然是强制性的,@ org.hibernate.annotations.Entity不是替代品。

答案 1 :(得分:1)

错误意味着Hibernate不了解org.apache.struts.register.model.Event;所以要么你的配置文件有错误,要么Hibernate没有加载文件(可能是在错误的地方,或者有两个同名的文件或类似的东西)。

在DEBUG级别启用日志记录,以查看Hibernate加载哪些文件以及它映射的类型。

也不要使用System.err.println("Error -->" + ex.getMessage());;这隐藏了很多有用的信息。如果您打算保留输出,请使用ex.printStackTrace()代替调试和log.error("Can't register event "+u, ex)