Ich hab mir (in Anlehnung an das Buch "Enterprise Java Beans 3.0") mal eine einfache Testapplikation gebaut. Der gesamte Source findet sich auf http://markus.ocrs.at/2006/12/05/ejb3-proof-of-concept (incl. c#-Democlient)
Es gibt 2 Entities: eine Cruise und eine Reservation, wobei eine Cruise beliebig viele Reservations haben kann:
Code:
@Entity
public class Reservation implements java.io.Serializable {
private Cruise cruise;
@ManyToOne
@JoinColumn( name = "CRUISE_ID" )
public Cruise getCruise() {
return cruise;
}
Code:
@Entity
public class Cruise implements java.io.Serializable {
private Collection reservations = new ArrayList();
@OneToMany( mappedBy = "cruise" )
public Collection getReservations() {
return reservations;
}
Prinzipiell funktioniert das ja ganz gut, was ich nicht verstehe, ist warum eine Suche nach allen Reservierungen die eine bestimmte Cruise betreffen nicht auf die triviale Art geht:
Code:
Collection<Reservation> results = cruise.getReservations();
Sondern ich das umständlich über ein Query lösen muss (und die Ergebnisse dann wieder in Reservations umcasten muss):
Code:
Query query = em.createQuery( "FROM Reservation r WHERE r.cruise.id=:cruiseID" );
query.setParameter( "cruiseID", cruise.getId() );
List results = query.getResultList();
Gibt es dafür irgendeinen Grund, sollte getReservations() gehen und ich bin zu blöd, oder soll das eh nicht gehen (und warum?)?
Lesezeichen