我是JPA的新手,想知道JPA是否包含我的问题的解决方案。 Els我只需要创建一个ManyToMany关系。
我的应用程序包含道路和相机。道路以相机开始和结束。我是通过在cameraPointA
类中创建属性cameraPointB
和RoadSegment
来创建的。这创造了多对两的关系。我认为我可以将其定义为两个多对一关系,但这似乎不可能。
CameraPoint.java
@Entity
public class CameraPoint implements Serializable {
@Id @GeneratedValue
private long id;
@OneToMany (mappedBy = "cameraPointA or cameraPointA") //<== The Problem
private List<RoadSegment> roads;
//...
}
RoadSegment.java
@Entity
public class RoadSegment implements Serializable {
@Id @GeneratedValue
private long id;
@ManyToOne(cascade = CascadeType.ALL)
private Region region;
@ManyToOne(optional=false)
private CameraPoint cameraPointA;
@ManyToOne(optional=false)
private CameraPoint cameraPointB;
//...
}
答案 0 :(得分:1)
我不知道这是否有效,但也许您可以尝试添加CameraPoint
另一个RoadSegments
列表,这表明相机有一个道路列表,其中相机是开始的,其他列表表示相机是最后一个。
@Entity
public class CameraPoint implements Serializable {
@Id @GeneratedValue
private long id;
@OneToMany (mappedBy = "cameraPointA")
private List<RoadSegment> roadsA;
@OneToMany (mappedBy = "cameraPointB")
private List<RoadSegment> roadsB;
//...
}
真的有必要使用双向关系吗?也许它不是,你的模型会更容易。
例如,如果您始终从CameraPoint
到达RoadSegment
,则@OneToMany
上不需要CameraPoint
关系。
同样适用于反向模式,如果您始终从之前的RoadSegment
获得CameraPoint
,则无需@ManyToOne
关系。