如何绘制 2 个城市之间的距离(关系 JPA)
How to map a distance between 2 cities (relationship JPA)
我对 JPA 注释有疑问。
我有 2 类
@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个城市组成。
数据库中有一组固定的城市,不会有任何插入或更新。
查看代码,这看起来不错,但正如我所见,您将在 table 中有一个 Composite 键,因为相同的城市组合不应再次重复。在这种情况下,您可以通过这种方式在模型中定义它
@Entity
public class City {
@Id
private int num;
}
创建可嵌入的密钥,可用于强制唯一性
@Embeddable
public class CitySet implements Serializable {
@ManyToOne
@JoinColumn(name = "fk_city1")
private City city1;
@ManyToOne
@JoinColumn(name = "fk_city2")
private City city2;
}
在最后的 Id 中使用相同的密钥 class
@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;
}
希望对您有所帮助
我对 JPA 注释有疑问。 我有 2 类
@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个城市组成。
数据库中有一组固定的城市,不会有任何插入或更新。
查看代码,这看起来不错,但正如我所见,您将在 table 中有一个 Composite 键,因为相同的城市组合不应再次重复。在这种情况下,您可以通过这种方式在模型中定义它
@Entity
public class City {
@Id
private int num;
}
创建可嵌入的密钥,可用于强制唯一性
@Embeddable
public class CitySet implements Serializable {
@ManyToOne
@JoinColumn(name = "fk_city1")
private City city1;
@ManyToOne
@JoinColumn(name = "fk_city2")
private City city2;
}
在最后的 Id 中使用相同的密钥 class
@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;
}
希望对您有所帮助