簡體   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