ゲッターは自動的に作成されません。各エンティティはデータベース内のテーブルを表すため、便利なゲッターを作成する必要があります。幸いなことに、Service Builder は必要に応じてこれを生成することもできます。
まず、 Service Builder にStudents
との間のマッピング テーブルを作成するように依頼しますCourses
。
<entity name="Student" local-service="true" remote-service="true" cache-enabled="false">
<column name="studentId" type="long" primary="true" />
<column name="courses" type="Collection" entity="Course" mapping-table="Courses_Students" />
</entity>
<entity name="Course" local-service="true" remote-service="true" cache-enabled="false">
<column name="courseId" type="long" primary="true" />
<column name="students" type="Collection" entity="Student" mapping-table="Courses_Students" />
</entity>
次に、適切なメソッドを に作成しますCourseLocalServiceImpl
。
public List<Course> getStudentCourses(long studentId)
throws PortalException, SystemException {
return coursePersistence.getCourses(studentId);
}
Courses
オブジェクトから取得Student
するには、生成された内にメソッドを作成しますStudentImpl.java
。
public List<Course> getCourses() throws Exceptions {
return CorseLocalServiceUtil.getStudentCourses(getStudentId());
}
最後に、 を実行してクラスを再生成しますant build-service
。
これで、学生が受講しているすべてのコースを次のように書くことで取得できます。
List<Course> courses = CourseLocalServiceUtil.getStudentCourses(studentId);
また
List<Course> courses = student.getCourses();