2桌有什么关系选择

时间:2014-01-28 20:40:58

标签: java oracle hibernate jpa

我正在使用JPA(休眠)并遇到问题。我有2个实体。 1是' Planes ',第二个是' Air-port '。我现在创建的是一个搜索Web应用程序,我正在尝试为它准备所有部分。因此,用户需要通过“Air-port”搜索“飞机”,因此它是“ OneToMany ”关系。 但问题是,如果我将它作为“OneToMany”,例如:

飞机实体

 //...
    @OneToMany(mappedBy='plane')
    private Set<Planes> planes = new HashSet<Planes>();
    //...

因此, 航空港实体

//...
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name="AirPort_ID")
private Planes plane;

但它不合适,因为在这种情况下,一架飞机只有一个机场。这不是真的。因此,当用户点击Air-port ID时,它将选择其中的所有平面。但是,每架飞机只有1个空港。 所以,要解决这个问题,使用ManyToMany可能会更好吗? 机场可以有很多飞机,飞机可以有很多机场。

2 个答案:

答案 0 :(得分:3)

您需要问问自己PlaneAirport之间的关系究竟是什么。我可以想到很多可能性。

  • 这个机场拥有这架飞机。
  • 这架飞机目前在这个机场的地面上。
  • 这架飞机目前正在前往这个机场。
  • 允许这架飞机使用这个机场。

您要在数据库中代表哪些内容?在我看来,这些关系中的三个是一对多的,其中一个是多对多的。因此,在决定其基数之前,您需要确定您尝试表达的关系。

答案 1 :(得分:0)

由于机场可以拥有许多飞机和许多机场的飞机,因此在这种情况下,多对多的关系将是正确的方式