8

1 対多の関係を作成したいので、次の service.xml を使用しました。

<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"/>
</entity>

<entity name="Course" local-service="true" remote-service="true" cache-enabled="false">
    <column name="courseId" type="long" primary="true" />
    <column name="studentId" type="long"/>
</entity>

私の問題は、コレクション メソッドに対して何も作成されないことです。例外なし、何もありません。クラスが生成され、単純な getter メソッドが存在しますが、getCourse() はありません。

私が間違っていることは何ですか?

4

2 に答える 2

9

ゲッターは自動的に作成されません。各エンティティはデータベース内のテーブルを表すため、便利なゲッターを作成する必要があります。幸いなことに、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();
于 2014-06-17T22:48:48.777 に答える