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; }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:@Entity public class Cruise implements java.io.Serializable { private Collection reservations = new ArrayList(); @OneToMany( mappedBy = "cruise" ) public Collection getReservations() { return reservations; }
Sondern ich das umständlich über ein Query lösen muss (und die Ergebnisse dann wieder in Reservations umcasten muss):Code:Collection<Reservation> results = cruise.getReservations();
Gibt es dafür irgendeinen Grund, sollte getReservations() gehen und ich bin zu blöd, oder soll das eh nicht gehen (und warum?)?Code:Query query = em.createQuery( "FROM Reservation r WHERE r.cruise.id=:cruiseID" ); query.setParameter( "cruiseID", cruise.getId() ); List results = query.getResultList();
Lesezeichen