Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JPA多对二关系_Java_Jpa_Jakarta Ee_Persistence - Fatal编程技术网

Java 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 @

我是JPA的新手,想知道JPA是否包含解决我问题的方法。我只需要建立一个多人的关系

我的应用程序包含道路和摄像头。道路的起点和终点都有摄像头。我通过在
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?编辑:喜欢