I getter non vengono creati automaticamente per te. Ogni entità rappresenta una tabella nel database, quindi dovrai creare getter che ritieni utili. Fortunatamente, Service Builder è anche in grado di generare questo se necessario.
In primo luogo, chiediamo a Service Builder di creare una tabella di mappatura tra e 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>
successivo, creiamo il metodo appropriato in CourseLocalServiceImpl
:
public List<Course> getStudentCourses(long studentId)
throws PortalException, SystemException {
return coursePersistence.getCourses(studentId);
}
Per ottenere Courses
dall'oggetto Student
creiamo metodo all'interno della generato StudentImpl.java
:
public List<Course> getCourses() throws Exceptions {
return CorseLocalServiceUtil.getStudentCourses(getStudentId());
}
Infine, rigenerare classi eseguendo ant build-service
.
Ora siamo in grado di ottenere tutti i corsi di uno studente sta prendendo scrivendo:
List<Course> courses = CourseLocalServiceUtil.getStudentCourses(studentId);
o
documentazione
List<Course> courses = student.getCourses();
fonte
2014-06-17 22:48:48
Ok, questo funziona. Ma ci lascia con colonne di database indesiderate (studentId) per la tabella del corso, giusto? – Breiti
Nell'XL Service Generator che hai fornito sopra, 'studentId' era già una colonna della tabella' course'. –
ok, vero;) Questo è un mio errore. C'è un modo per sbarazzartene? Per avere solo il getter per la lista? E, seconda domanda: non c'è modo di ottenere quegli elementi da un elemento studente? – Breiti