我有一个像;
@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();
希望有用