简体   繁体   English

休眠映射错误-未知实体

[英]Hibernate mapping error - Unknown entity

I'm a hibernate newbie and im receiving this error when trying to persist an object - 我是休眠新手,即时消息在尝试保留对象时收到此错误-

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

In my hibernate.cfg.xml , I define my mapping as, hibernate.cfg.xml ,我将映射定义为

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

My event class - 我的活动课-

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 - 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()) , is the line that throws the exception. System.err.println("Error -->" + ex.getMessage())是引发异常的行。

Thanks. 谢谢。

import org.hibernate.annotations.Entity;

the hibernate @Entity is not enough to get your entity discovered. 休眠@Entity不足以发现您的实体。 Use javax.persistence.Entity instead. 请改用javax.persistence.Entity

See here : 看这里

@javax.persistence.Entity is still mandatory, @org.hibernate.annotations.Entity is not a replacement. @ javax.persistence.Entity仍然是强制性的,@ org.hibernate.annotations.Entity不能替代。

The error means that Hibernate doesn't know about org.apache.struts.register.model.Event ; 该错误意味着Hibernate不了解org.apache.struts.register.model.Event ; so either your config file has an error or Hibernate it not loading the file (maybe its in the wrong place or there are two files with the same name or something like that). 因此您的配置文件有错误或休眠而不加载文件(可能在错误的位置,或者有两个名称相同或类似的文件)。

Enable logging at the level DEBUG to see which files Hibernate loads and which types it maps. 在DEBUG级别启用日志记录,以查看Hibernate加载的文件和映射的类型。

Also don't use System.err.println("Error -->" + ex.getMessage()); 也不要使用System.err.println("Error -->" + ex.getMessage()); ; ; this hides a lot of useful information. 这隐藏了很多有用的信息。 Use ex.printStackTrace() instead for debugging and log.error("Can't register event "+u, ex) if you plan to keep the output. 如果打算保留输出log.error("Can't register event "+u, ex)请使用ex.printStackTrace()进行调试,并使用log.error("Can't register event "+u, ex)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM