gpt4 book ai didi

java - 具有备用目标列的 hibernate 映射

转载 作者:行者123 更新时间:2023-12-02 07:35:39 25 4
gpt4 key购买 nike

我有一个模型对象关系,如下所示:

@Table(name="cables")
class Cable {
@Id
private Long id;
@Column(name="dstport_id")
private Port dstPort;
@Column(name="srcport_id")
private Port srcPort;
}
@Table(name="ports")
class Port {
@Id
private Long id;
private Cable cable; // Here's the mapping that should point to cables.dstport_id or cables.srcport_id whatever is present
}

在此关系中,映射是通过 Cable 的 dstport_id 或 srcport_id 列进行的一对一映射。一根电缆可以不连接到一个端口,也可以连接到一个或两个(完全不同的)端口。端口可以​​不连接到任何电缆或仅连接到一根电缆及其任一端点。那么,Hibernate 有没有办法在 Port 实体内部映射这样的关系(没有技巧可以将其映射到 Cable 实体内部)?

最佳答案

我认为仅用端口中的一个关联来定义从端口到电缆的关系是不可能的。

在我看来,最好的选择是使用以下命令定义 2 个可选的、一对一的与电缆端口关联(例如 dstPortCable 和 srcPortCable ) 'mappedBy'加入方法,然后在Port中定义一个方法,这样:

public Cable getCable() {
if (dstPortCable != null) {
return dstPortCable;
}
if (srcPortCable != null) {
return srcPortCable;
}
return null;
}

关于java - 具有备用目标列的 hibernate 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12277037/

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