我对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个城市。

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

最佳答案

查看代码,这看起来不错,但是正如我所看到的,您将在表中拥有一个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一起使用相同的键

@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 - 如何绘制两个城市之间的距离(JPA关系),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58853415/

10-13 03:29