我是一个休眠的新手,我在尝试持久化对象时收到此错误 -
错误 - >未知实体: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())
,是抛出异常的行。
感谢。
答案 0 :(得分:5)
import org.hibernate.annotations.Entity;
hibernate @Entity
不足以让你的实体被发现。请改用javax.persistence.Entity
。
@ 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)
。