如何在Spring Data JPA中两次使用另一个实体中的一个实体?



我有一个像;

@Table(name = "Airport")
public class Airport extends BaseEntity {
@Id
@Column(name = "Id", unique = true, updatable = false)
private Long id;
@Column(name = "Name", unique = true)
private String name;
@Column(name = "IcaoCode", unique = true)
private String icaoCode; //International Civil Aviation Organisation
private String city;
}

和我还有Route实体,它有出发机场和目的地机场;

@Table(name = "Route")
public class Route extends BaseEntity {
@Id
@Column(name = "Id", unique = true, updatable = false)
private Long id;
@Column(name = "DeparturePlace")
private Airport departurePlace;

@Column(name = "DestinationPlace")
private Airport destinationPlace;
}

我想做的是创建具有唯一对目的地-出发地点的Routes,并且目的地和出发地点不能相等。

编辑:一条航线只能由两个机场组成,即出发机场和目的地机场。此外,如果我有像A-B-C这样的机场,我应该被允许创建不同的独特路线,如下图所示;

A->B
A->C
B->C
B->A
C->A
C->B

机场和航线之间是否存在一一对应的关系?如果是,我应该如何在Route中注释departurePlace和destinationPlace字段?

是的,有一对一的关系,所以你的路由实体将像

@OneToOne(cascade= CascadeType.ALL)
@JoinColumn(name = "DeparturePlace_ID", referencedColumnName = "id")
private Airport departurePlace;
@OneToOne(cascade= CascadeType.ALL)
@JoinColumn(name = "DestinationPlace_ID", referencedColumnName = "id")
private Airport destinationPlace;

就像评论讨论一样,一个机场可以有多条路线:

您需要在Airport实体中添加

@ManyToOne()
@JoinColumn(name="route_id")
Route route();

希望有用

最新更新