Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

liferay-6.1 - Implement own service

Tags:

liferay-6

Hey I have create my own service.xml with student. Now o want to add my own searchByName method for student. can you please explain me what to write in StudentLocalServiceImpl.

 public class StudentLocalServiceImpl extends StudentLocalServiceBaseImpl {
/*
 * NOTE FOR DEVELOPERS:
  *
 */

public List<Student> getAll() throws SystemException {
    return studentPersistence.findAll();
}

public Student getStudentByName(String name) {
    return studentPersistence.
}

// I have created one method getAll.
I need help for the another one.
Thanks in Advance.

like image 839
Jay Trivedi Avatar asked Nov 30 '12 16:11

Jay Trivedi


1 Answers

You would first declare this as a "finder" element in the service.xml within the entity you defined.

e.g.

<finder name="Name" return-type="Student">
    <finder-column name="name" />
</finder>

The return-type could also be Collection if wanting a List<Student> as the return type, if name is not unique.

<finder name="Name" return-type="Collection">
    <finder-column name="name" />
</finder>

You can also state a comparison operator for the column:

<finder name="NotName" return-type="Collection">
    <finder-column name="name" comparator="!=" />
</finder>

A finder can actually declare a unique index as well to be generated on this relation (will be applied to the DB table) by specifying the unique="true" attribute on the finder:

<finder name="Name" return-type="Student" unique="true">
    <finder-column name="name" />
</finder>

With this definition and after re-runing ant build-service the studentPersistence will contain new methods using the name of the finder found in the xml element appended with a prefix: countBy, findBy, fetchBy, removeBy, etc.

Finally, your serice method would only need to contain the following (based on the above):

public Student getStudentByName(String name) throws SystemException {
    return studentPersistence.findByName(name);
}

HTH

like image 117
Ray Avatar answered Jan 02 '23 05:01

Ray