Die Methode "findAll" muss implementiert werden. Dazu zum EJB-Implementierungsdeskriptor unter "Queries"
eine neue hinzufügen.
Die Query lautet
select object(o) from Kuchen o order by o.name
Das Ergebnis sollte so aussehen:
Die Logik für das Verwalten des Primary Keys muss implementiert werden (manuell zu erzeugen !):
Zuerst wird eine ejbSelect-Methode hinzufügt, um den bisherigen maximalen Primary Key-Wert der Tabelle zu ermitteln.
Dazu zum EJB-Implementierungsdeskriptor der Bean wechseln (Doppelklick auf die Bean in der J2EE-Hierarchie), und unter
"Queries" eine neue hinzufügen.
Wir fügen eine neue Methode namens "ejbSelectMaxId" zu, die den Rückgabetyp "Integer" hat.
Die Query sieht so aus:
select max (o.id) from Kuchen o
Weitere Nachbearbeitung:
In der Methode "ejbCreate" entfernen wir den Parameter "id" (im Home-Interface nachziehen !)
sowie den Aufruf von "setId(id)".
Stattdessen wird die ID mittels einer einzufügenden Methode "ejbHomeGetNextId" abgerufen (diese wiederum greift auf "ejbSelectMaxId"
zu) und in der Bean gesetzt:
this.setId (this.ejbHomeGetNextId() )
Alternativ hätten wir hier auch über das Home-Interface gehen können:
this.setId ( ( (KuchenLocalHome) (this.getEntityContext().getEJBLocalHome())).getNextId() );
"ejbHomeGetNextId" muss auf das Home-Interface hochgestuft werden.
Die Methode "ejbCreateByName" (Rückgabewert: Integer !) muss zugefügt werden. Natürlich muss auch "ejbPostCreateByName"
implementiert werden. Diese neue Create-Methode muss auf das LocalHome-Interface hochgestuft werden.