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?)?