我在通过OpenJPA实现利用JPA 1.0时遇到了问题。我的数据模型包含一个与Leg有OneToMany关系和与Passenger有OneToMany关系的Trip。 Leg和Passenger在PassengerLeg中有关联。这被映射为双向OneToMany/ManyToOne。所以基本上我的数据模型中有一颗钻石。如果一次旅行有2条腿和3名乘客,则会有6条乘客腿。对于各种用例,我需要从每个实体的每个方向。现在,当我试图加载所有内容时,PassengerLeg中的腿部字段将为空,我无法弄清楚原因。这里是我的类的轻薄表示:JPA不急于加载所有内容
@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;
}
我花了无数小时来阅读文档和任何我可以找到关于谷歌要弄清楚什么可能导致这一点,但我没有任何运气。任何人有任何想法会导致这种情况?让我知道你是否需要关于类/注释的更多信息。
是不是你在那些一对多注释丢失'mappedBy'? – madth3 2012-03-14 23:00:00
谢谢。我在这个例子中忘记了mappedBy属性中添加了,但是在我的应用程序中。 OneToMany注释中也有一个丢失的提取属性。 – Marshmellow1328 2012-03-15 14:20:46