看在我这么晚还在学习的份上。大家给点鼓励吧。。能帮我解决问题是对我最好的鼓励。。感激不尽。。最近在学hibernate。学到映射关系,想自己综合的练练手。但是插入数据抛了一个异常:org.hibernate.MappingException: Unknown entity: java.util.HashSet
at org.hibernate.impl.SessionFactoryImpl.getEntityPersister(SessionFactoryImpl.java:628)
at org.hibernate.impl.SessionImpl.getEntityPersister(SessionImpl.java:1366)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:121)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
at com.test.bean.TestHibernate.main(TestHibernate.java:79)先看看pojo类:胜略getter,setter方法了。
主要关系是:课程与学生是多对多的关系。班级与学生是一对多的关系        /**
 * 学生类
 */
private String id;
private String name;
private int age;
private Set<Course> course;
        /**
 * 班级类
 */
private String id;
private String name;
private Set<Student> student;
        /**
 * 课程类
 */
private String id;
private String name;
private Set<Student> student;
再看看映射文件:
student.hbm.xml:<class name="com.test.bean.Student" table="student">
<id name="id" column="id" type="string">
<generator class="uuid"/>
</id>
<property name="name" column="studentName" type="string"/>
<property name="age" column="Studentage" type="int" />
<set name="course" table="student_course" cascade="all" >
<key column="student_id"/>
<many-to-many class="com.test.bean.Course" column="course_id" />
</set>
</class>
course.hbm.xml
<class name="com.test.bean.Course" table="course">
<id name="id" column="id" type="string">
<generator class="uuid"/>
</id>
<property name="name" column="courseName" type="string"/>
<set name="student" table="student_course" cascade="all">
<key column="student_id"/>
<many-to-many class="com.test.bean.Student" column="course_id"  />
</set>
</class>
还有一个team.hbm.xml
<class name="com.test.bean.Team" table="Team">
<id name="id" column="id" type="string">
<generator class="uuid"></generator>
</id>
<property name="name" column="teamName" type="string" />
<set name="student" cascade="all" inverse="true" fetch="select">
<key column="team_id"></key>
<one-to-many class="com.test.bean.Student" />
</set>
</class>
最后就是测试了: private static SessionFactory sessionfactory;
static{
try {
//创建会话工厂
sessionfactory=new Configuration().configure().buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Session session=sessionfactory.openSession();
Transaction tx=null;
Team team=new Team();
team.setName("team1");
team.setStudent(new HashSet<Student>());

Student stu1=new Student();
stu1.setAge(19);
stu1.setName("cc");

Student stu2=new Student();
stu2.setAge(20);
stu2.setName("aa");

Student stu3=new Student();
stu3.setAge(21);
stu3.setName("bb");
stu1.setCourse(new HashSet<Course>());
stu2.setCourse(new HashSet<Course>());
stu3.setCourse(new HashSet<Course>());

Course course1=new Course();
course1.setName("英语");
Course course2=new Course();
course2.setName("地理");
Course course3=new Course();
course3.setName("数学");
course1.setStudent(new HashSet<Student>());
course2.setStudent(new HashSet<Student>());
course3.setStudent(new HashSet<Student>());

// course1.getStudent().add(stu1);
// course1.getStudent().add(stu3);
// course2.getStudent().add(stu1);
// course2.getStudent().add(stu3);
// course3.getStudent().add(stu2);
// course3.getStudent().add(stu3);

stu1.getCourse().add(course1);
stu1.getCourse().add(course2);
stu2.getCourse().add(course3);
stu3.getCourse().add(course1);
stu3.getCourse().add(course2);
stu3.getCourse().add(course3);

Set<Student> student=team.getStudent();
student.add(stu1);
student.add(stu2);
student.add(stu3);
try {
tx=session.beginTransaction();
session.save(student);
tx.commit();
} catch (Exception e) {
if(null!=tx)
tx.rollback();
  e.printStackTrace();
}finally{
session.close();
}
}