有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Hibernate双向多对多实现

我对hibernate还不熟悉,我想在hibernate中实现类似的东西。为了做到这一点,我在设置xml映射文件时遇到了问题。如果有人能帮助我,这将是非常好的,因为这只是我正在尝试做的概念证明,我有很多复杂的事情要做。谢谢

public class Course implements java.io.Serializable 
{
    private long courseId;
    private String courseName;
    private Set <Student> Stu = new HashSet <Student>();
}

public class Student implements java.io.Serializable 
{

    private long studentId;
    private String studentName;
    private Set<Course> courses = new HashSet<Course>();
}

但在数据库中,我希望创建3个表 学生、课程和学生课程

              Student----->StudentCourse<------Course 
            StudentId      StudentId          CourseId     
                            CourseId     

我想要的是当我

 Course C1=(Course)session.get(Course.class,CourseId)

我得到了指定的课程,通过这样做

  Set <Student> StudentsEnrolled=C1.getStu();

我让所有学生都报名参加那门课程

相似地 当我这么做的时候

Student S1=(Student)session.get(Student.class,StudentId)

通过这样做,我得到了指定的学生

Set <Course> CoursesEnrolled=S1.getCourses();

我得到指定学生所学的所有课程


共 (1) 个答案

  1. # 1 楼答案

    您所寻找的与此处所述的示例非常相似: http://technicalmumbojumbo.wordpress.com/2007/09/25/investigating-hibernate-associations-many-to-many/

    它从单向关系开始,最后定义了双向关系的映射

    希望这有帮助,
    八伏

    =====================================
    不要忘记你必须决定哪个实体是这种关系的所有者:学生还是课程。 一旦确定了这一点,“owned”实体的Hibernate映射需要将“inverse”标志设置为true
    如果您在本文末尾检查Phone实体的Hibernate映射,那么上面的链接中就是这样描述的