繁体   English   中英

JPA多对二关系

[英]JPA Many to Two relationship

我是JPA的新手,想知道JPA是否包含针对我的问题的解决方案。 Els我将只需要创建一个ManyToMany关系。

我的应用程序包含道路和照相机。 道路始于摄像机,始于摄像机。 我是通过在RoadSegment类中创建属性cameraPointAcameraPointB来创建的。 这创造了多对二的关系。 我以为可以将其定义为两个多对一的关系,但这似乎是不可能的。

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;

    //...
}

我不知道这是否会工作,但也许你可以尝试添加到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;

//...
}

使用双向关系真的必要吗? 也许不是,您的模型会更容易。

例如,如果你总是达不到的CameraPointRoadSegment那么你不需要@OneToMany的关系CameraPoint

这同样适用于反向模式下,如果你总是得到RoadSegment从以前的CameraPoint ,那么@ManyToOne关系是没有必要的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM