gpt4 book ai didi

java - 双向一对一映射到多个字段

转载 作者:搜寻专家 更新时间:2023-11-01 02:52:58 25 4
gpt4 key购买 nike

我有一个名为 Flight 的域类,它表示已经飞过的航类。我还有另一个名为 Movement 的类,它可以表示出发或到达,并包含日期和时间以及移动发生的机场。

@Entity
public class Flight implements Serializable {

private Movement departure;
private Movement arrival;
}

@Entity
public class Movement implements Serializable {
@Temporal(TemporalType.TIMESTAMP)
private Date dateTime;
@ManyToOne
private Airport airport;

private Flight flight;
}

但是,我不确定如何正确注释 Movement 类中的 flight 字段。我认为 Flight 类必须是关系的拥有方,因为如果不是,则无法判断特定 Flight 的 Movement 出发到达:

@OneToOne
private Movement departure;
@OneToOne
private Movement arrival;

然而,这带来了一个问题。我无法在两个字段上映射 Movement 类中的 flight 字段:

// This obviously does not work
@OneToOne(mappedBy = "departure")
@OneToOne(mappedBy = "arrival")
private Flight flight;

我将如何正确地注释它,让 departurearrival 字段正确引用 Movement 并且仍然能够拥有Movement 类中的 flight 字段引用了 Flight 类?

最佳答案

如果你真的需要一个双向关系,那么你将需要移动中的字段,其中一个字段始终为空:

@OneToOne(mappedBy = "departure")
private Flight departureFlight;

@OneToOne(mappedBy = "arrival")
private Flight arrivalFlight;

但是你可以有一个 getter:

public Flight getFlight() {
return departureFlight == null ? arrivalFlight : departureFlight;
}

关于java - 双向一对一映射到多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603270/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com