Why hibernate uses a join table for these classes?
@Entity public class CompanyImpl { @OneToMany private Set flights; @Entity public
Because that's how it's designed, and what the JPA spec tells it to map such an association. If you want a join column in the Flight table, use
@Entity public class CompanyImpl { @OneToMany @JoinColumn(name = "company_id") private Set flights; }
This is documented.