异常信息:
Exception in thread "main" org.hibernate.MappingException: Unknown entity: com.red.bean.Book
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:548)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1338)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:96)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:186)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:175)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:27)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:535)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:523)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:519)
at com.red.test.TestBook.main(TestBook.java:26)
报错代码:
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import org.hibernate.annotations.Entity;
@Entity
@Table( name = "t_book")
public class Book implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
private Integer gid = 0;
@Column( name = "name")
private String name = "";
...
原因分析:
hibernate使用注解方式映射时,@Entity实现类引入错误,应该引入import javax.persistence.Entity;而不是import org.hibernate.annotations.Entity;
正确代码如下:
import java.io.Serializable;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Column;
import javax.persistence.Entity;
@Entity
@Table( name = "t_book")
public class Book implements Serializable
{
private static final long serialVersionUID = 1L;
@Id
private Integer gid = 0;
...
另外,如果在hibernate.cfg.xml文件中没有指定相应的bean类com.red.bean.Book,也会报该异常,正确的做法如下:
<hibernate-configuration>
<session-factory>
...
<mapping class="com.red.bean.Book"/>
</session-factory>
</hibernate-configuration>