Cat实体package com.jafee.app.domain;import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;@Entity
@Table(name="t_cat")
public class Cat {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "name")
private String name;
@Column(name = "description")
private String descrition;
@ManyToOne
@JoinColumn(name = "mother_id")
private Cat mother;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "createDate")
private Date createDate;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescrition() {
return descrition;
}
public void setDescrition(String descrition) {
this.descrition = descrition;
}
public Cat getMother() {
return mother;
}
public void setMother(Cat mother) {
this.mother = mother;
}
public Date getCreateDate() {
return createDate;
}
public void setCreateDate(Date createDate) {
this.createDate = createDate;
}
}
hibernate.cfg.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> <!-- Database connection settings -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property> <!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property> <!-- Echo all executed SQL to stdout -->
<property name="show_sql">true</property> <!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create</property> <mapping class="com.jafee.app.domain.Cat" />
</session-factory></hibernate-configuration>
HibernateUtilpackage com.jafee.app.util;import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;public class HibernateUtil {
private static final SessionFactory sessionFactory; static {
try{
sessionFactory = new Configuration().configure().buildSessionFactory();
}catch(Throwable ex){
System.out.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}

public static SessionFactory getSessionfactory() {
return sessionFactory;
}
}
就是创建sessionFactory的时候出错了,我用的是3.6.0版本,所以用Configuration应该没问题吧,用AnnotationConfiguration反而会被提示过时的类。错误信息:Initial SessionFactory creation failed.org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.jafee.app.domain.Cat"/>
Exception in thread "main" java.lang.ExceptionInInitializerError
at com.jafee.app.util.HibernateUtil.<clinit>(HibernateUtil.java:14)
at com.jafee.app.manager.CatTest.main(CatTest.java:34)
Caused by: org.hibernate.MappingException: An AnnotationConfiguration instance is required to use <mapping class="com.jafee.app.domain.Cat"/>
at org.hibernate.cfg.Configuration.parseMappingElement(Configuration.java:1634)
at org.hibernate.cfg.Configuration.parseSessionFactory(Configuration.java:1589)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1568)
at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1542)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1462)
at org.hibernate.cfg.Configuration.configure(Configuration.java:1448)
at com.jafee.app.util.HibernateUtil.<clinit>(HibernateUtil.java:11)
... 1 more