gpt4 book ai didi

java - 如何绘制2个城市之间的距离(关系JPA)

转载 作者:行者123 更新时间:2023-12-02 09:18:27 25 4
gpt4 key购买 nike

我有一个关于 JPA 注释的问题。我有两个类

@Entity(name="CITY")
@Table(name="CITY")
@SequenceGenerator(name="seqCITY", initialValue=0, allocationSize=1)
public class CITY{

@Id
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="seqCITY")
private int num;
private String libelle;

@OneToMany
private List<Distance> listDistanceCity;
}

@Entity(name="DISTANCE")
@Table(name="DISTANCE")
public class Distance {

@Id
private int num;

@ManyToOne
@JoinColumn(name = "fk_city1")
private City city1;

@ManyToOne
@JoinColumn(name = "fk_city2")
private City city2;

private float distance;

}

如果我想表达 2 个城市之间的距离,这些注释是否正确?例如,从纽约出发,与曼哈顿、旧金山、洛杉矶有距离。距离由2个城市组成。

数据库中有一组固定的城市,不会有任何插入或更新。

最佳答案

查看代码,这看起来不错,但正如我所见,表中将有一个复合键,因为相同的城市组合不应再次重复。在这种情况下,您可以这样在模型中定义它

@Entity
public class City {
@Id
private int num;
}

创建一个可嵌入的 key ,可用于强制唯一性

@Embeddable
public class CitySet implements Serializable {

@ManyToOne
@JoinColumn(name = "fk_city1")
private City city1;

@ManyToOne
@JoinColumn(name = "fk_city2")
private City city2;
}

在最后一个类中使用与您的 ID 相同的 key

@Entity(name="DISTANCE")
@Table(name="DISTANCE")
@IdClass(CitySet.class)
public class Distance {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int num;

@Id
private City city1;

@Id
private City city2;

private float distance;

}

希望这有帮助

关于java - 如何绘制2个城市之间的距离(关系JPA),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58853415/

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