Я новичок в Hibernate.Я заметил, что в Hibernate отображение java-классов в таблицы базы данных часто включает таблицы отношений, даже иногда таблицы отношений не нужны (как в отношении «один ко многим» или наоборот).
Например:
Я являюсь классом Компании и классом Полетов, в котором у компании может быть много рейсов (ассоциация один-ко-многим от Компании к Полету).
У меня есть следующий код, использующий аннотации в спящем режиме:
@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
......
}
Классы успешно сопоставлены с базой данных.И есть три таблицы:
- COMPANY (поле идентификатора)
- FLIGHT (поле идентификатора и поле COMP_ID)
- COMPANY_MANY_TO_ONE_FLIGHT(два поля: MANY_TO_ONE_COMPANY_id и flight_id)
Однако последняя таблица COMPANY_MANY_TO_ONE_FLIGHT - это таблица отношений, добавленная hibernate, которая является избыточной.
Очевидно, что в таблице FLIGHT есть внешний ключ COMP_ID, и разумно удалить таблицу избыточных отношений.
И как мне избежать такого обстоятельства?Как и путем изменения аннотаций.