Я новичок в спящем режиме, и я хочу реализовать что-то подобное в спящем режиме. Чтобы иметь возможность сделать это, у меня возникает проблема с настройкой файла сопоставления 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();
Я получаю всех студентов, обучающихся в этом курсе
Similary Когда я делаю
Student S1=(Student)session.get(Student.class,StudentId)
Я получаю заданного ученика и выполняя
Set <Course> CoursesEnrolled=S1.getCourses();
Я получаю все курсы, которые указал выбранный ученик
Взгляните на this
<hibernate-mapping>
<class name="com.vaannila.student.Student" table="STUDENT">
<meta attribute="class-description">This class contains student details.</meta>
<id name="studentId" type="long" column="STUDENT_ID">
<generator class="native" />
</id>
<property name="studentName" type="string" length="100" not-null="true" column="STUDENT_NAME" />
<set name="courses" table="STUDENT_COURSE" cascade="all">
<key column="STUDENT_ID" />
<many-to-many column="COURSE_ID" class="com.vaannila.student.Course" />
</set>
</class>
</hibernate-mapping>
<hibernate-mapping>
<class name="com.vaannila.student.Course" table="COURSE">
<meta attribute="class-description">This class contains course details.</meta>
<id name="courseId" type="long" column="COURSE_ID">
<generator class="native"/>
</id>
<property name="courseName" type="string" column="COURSE_NAME"/>
<set name="students" table="STUDENT_COURSE" cascade="all">
<key column="COURSE_ID" />
<many-to-many column="STUDENT_ID" class="com.vaannila.student.Student" />
</set>
</class>
</hibernate-mapping>
Хорошо, если вы зеркалируете набор в другом классе, как это, он не работает?
То, что вы ищете, очень похоже на пример, указанный здесь: http://technicalmumbojumbo.wordpress.com/2007/09/25/investigating-hibernate-associations-many-to-many/
Он начинается с однонаправленного отношения, и в конце он определяет отображения для двунаправленного.
Надеюсь, что это поможет,
Octav
=====================================
Не забывайте, что вам нужно решить, какая организация является владельцем этих отношений: студент или курс.
После того, как вы решили, сопоставление Hibernate "принадлежащего" объекта должно иметь флаг "обратный", установленный в true.
Именно так, как описано в ссылке выше, если вы проверяете сопоставление Hibernate для объекта Phone, в конце статьи.