hibernate三表连接,插入数据。求指教
看在我这么晚还在学习的份上。大家给点鼓励吧。。能帮我解决问题是对我最好的鼓励。。感激不尽。。
最近在学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)
/** * 学生类 */ 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;
<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>
<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>
<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(); } }