2010-12-04 2 views
0

Я новичок в спящем режиме, и я хочу реализовать что-то подобное в спящем режиме. Чтобы иметь возможность сделать это, у меня возникает проблема с настройкой файла сопоставления xml. Если кто-то может помочь мне, это было бы очень хорошо, как это только доказательство концепции я пытаюсь сделать, у меня есть много сложных вещи в do.ThanksHibernate Двунаправленная реализация от многих до многих.

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 таблицы будет создан студента, курс и StudentCourse

   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(); 

Я получаю все курсы указанный учащийся взял

+0

Только подсказка: при использовании спящего режима вы можете использовать аннотации, чтобы описать блок отображения XML. Он обладает теми же функциями, но писать не стоит. – Ralph 2010-12-04 18:40:14

ответ

1

Посмотрите на 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> 

Ну если зеркало набор в другом классе, как это она не работает?

1

Что вы ищете очень похож на примере указанного здесь: http://technicalmumbojumbo.wordpress.com/2007/09/25/investigating-hibernate-associations-many-to-many/

Она начинается с однонаправленной связью, и в конце концов она определяет отображения для двунаправленного одного.

Надеется, что это помогает,
Octav

=================================== ==
Не забывайте, что вам нужно решить, какая организация является владельцем этих отношений: студент или курс. После того, как вы решили, сопоставление Hibernate «принадлежащего» объекта должно иметь флаг «обратный», установленный в true.
Именно так описано в приведенной выше ссылке, если вы проверяете сопоставление Hibernate для объекта Phone, в конце статьи.

+0

В обеих ссылках, показанных выше, одна из таблиц имеет набор, а другой нет. Мне нужна ситуация, когда обе таблицы содержат наборы – Noor 2010-12-04 12:26:51

Смежные вопросы