我在通过OpenJPA实现利用JPA 1.0时遇到了问题.我的数据模型包括一个与Leg有OneToMany关系的Trip和一个与Passenger的OneToMany关系.Leg和Passenger在PassengerLeg中有一个关联.这被映射为双向OneToMany/ManyToOne.基本上我的数据模型中有一颗钻石.如果旅行有2条腿和3名乘客,将有6个乘客腿.对于各种用例,我需要从每个实体的每个方向.现在,当我试图急切地加载所有内容时,PassengerLeg中的leg字段将为null,我无法弄清楚原因.这是我课程的一个吝啬代表:
@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;
}
Run Code Online (Sandbox Code Playgroud)
我花了无数个小时阅读文档以及我在Google上可以找到的任何可能导致这种情况的任何内容,但我没有任何运气.任何人有任何想法会导致这种情况吗?如果您需要有关课程/注释的更多信息,请与我们联系.
JPA从不急于加载许多方面,因为它可能是耗时的操作.默认提取正如JPA规范中所述
因为操作繁重所以我也不会建议你去Eager fetch