私は休止状態が初めてです。Hibernate では、Java クラスをデータベース テーブルにマッピングするときにリレーション テーブルが必要になることが多く、リレーション テーブルが必要ない場合もあります (1 対多のリレーションやその逆の場合など)。
例えば:
私は Company クラスと Flight クラスであり、会社は多くのフライト (Company から Flight への 1 対多の関連付け) を持つことができます。
休止状態の注釈を使用した次のコードがあります。
@Entity
@Table(name = "COMPANY")
public class Company {
@Id
private Long id;
@OneToMany
private Set<Flight> flights = new HashSet<Flight>();
......
getter and setter methods
......
}
@Entity
@Table(name="FLIGHT")
public class Flight{
@Id
private Long id;
@ManyToOne
@JoinColumn(name = "COMP_ID")
private Company ownerCompany;
......
getter and setter methods
......
}
クラスがデータベースに正常にマップされました。また、次の 3 つのテーブルがあります。
- COMPANY(ID フィールド)
- FLIGHT (ID フィールドと COMP_ID フィールド)
- COMPANY_MANY_TO_ONE_FLIGHT (2 つのフィールド: MANY_TO_ONE_COMPANY_id と flight_id )
ただし、最後のテーブル COMPANY_MANY_TO_ONE_FLIGHT は、hibernate によって追加されたリレーション テーブルであり、冗長です。
明らかに、FLIGHT テーブルには外部キー COMP_ID があり、冗長なリレーション テーブルを削除することは合理的です。
そして、どうすればそのような状況を避けることができますか? 同様に、注釈を変更します。