Java JPA多对二关系
我是JPA的新手,想知道JPA是否包含解决我问题的方法。我只需要建立一个多人的关系 我的应用程序包含道路和摄像头。道路的起点和终点都有摄像头。我通过在Java JPA多对二关系,java,jpa,jakarta-ee,persistence,Java,Jpa,Jakarta Ee,Persistence,我是JPA的新手,想知道JPA是否包含解决我问题的方法。我只需要建立一个多人的关系 我的应用程序包含道路和摄像头。道路的起点和终点都有摄像头。我通过在RoadSegment类中创建属性cameraPointA和cameraPointB创建了这个属性。这创造了一种多对二的关系。我想我可以将其定义为两对一关系,但这似乎是不可能的 CameraPoint.java @Entity public class CameraPoint implements Serializable { @Id @
RoadSegment
类中创建属性cameraPointA
和cameraPointB
创建了这个属性。这创造了一种多对二的关系。我想我可以将其定义为两对一关系,但这似乎是不可能的
CameraPoint.java
@Entity
public class CameraPoint implements Serializable {
@Id @GeneratedValue
private long id;
@OneToMany (mappedBy = "cameraPointA or cameraPointA") //<== The Problem
private List<RoadSegment> roads;
//...
}
@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;
//...
}
我不知道这是否可行,但也许您可以尝试将另一个
道路段列表添加到CameraPoint
,该列表指示摄影机有一个道路列表,其中摄影机是起点,而另一个列表指示摄影机是最后一个
@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实现可序列化{
@Id@GeneratedValue
私人长id;
@OneToMany(mappedBy=“cameraPointA”)
私人名单a;
@OneToMany(mappedBy=“cameraPointB”)
私人名单b;
//...
}
真的有必要使用双向关系吗?也许不是,你的模型会更简单
例如,如果始终从路段
到达摄影机点
,则不需要摄影机点
上的@OneToMany
关系
这同样适用于反向模式,如果您总是从以前的CameraPoint
获取路段,则不需要@manytone
关系。两个字段如何,一个mappedBy=“cameraPointA”
,一个mappedBy=“cameraPointB”
,加上一些结合了这两个领域的getter?编辑:喜欢