J'ai un problème d'utilisation de JPA 1.0 via l'implémentation OpenJPA. Mon modèle de données se compose d'un voyage qui a une relation OneToMany avec un segment et une relation OneToMany avec un passager. Leg et Passenger ont une association dans PassengerLeg. Celle-ci est mappée comme une relation bidirectionnelle OneToMany/ManyToOne. J'ai donc essentiellement un diamant dans mon modèle de données. Si un voyage a 2 étapes et 3 passagers, il y aura 6 passengerLegs. Pour divers cas d'utilisation, j'ai besoin d'aller dans chaque direction à partir de chaque entité. Pour l'instant, lorsque j'essaie de tout charger rapidement, le champ de l'étape dans PassengerLeg est nul et je n'arrive pas à comprendre pourquoi. Voici une représentation sommaire de mes classes :
@Entity
public class Trip {
@OneToMany(mappedBy = "trip", fetch = FetchType.EAGER)
private List<Leg> legs;
@OneToMany(mappedBy = "trip", fetch = FetchType.EAGER)
private List<Passenger> passengers;
}
@Entity
public class Leg {
@ManyToOne
@JoinColumn(name = "TRIP_ID")
private Trip trip;
@OneToMany(mappedBy = "leg", fetch = FetchType.EAGER)
private List<PassengerLeg> passengers;
}
@Entity
public class Passenger {
@ManyToOne
@JoinColumn(name = "TRIP_ID")
private Trip trip;
@OneToMany(mappedBy = "passenger", fetch = FetchType.EAGER)
private List<PassengerLeg> legs;
}
@Entity
public class PassengerLeg {
@ManyToOne
@JoinColumn(name = "LEG_ID")
private Leg leg; //this will be null
@ManyToOne
@JoinColumn(name = "PASSENGER_ID")
private Passenger passenger;
}
J'ai passé d'innombrables heures à lire la documentation et tout ce que j'ai pu trouver sur Google pour trouver la cause de ce problème, mais je n'ai pas eu de chance. Quelqu'un a-t-il une idée de ce qui pourrait causer cela ? Faites-moi savoir si vous avez besoin de plus d'informations sur les classes/annotations.