| When declaring a mapping as follows:
@MappedSuperclass
public abstract class Product {
@Id
@Column(name = "PRODUCT_ID")
private Long productId;
@ManyToMany(fetch = FetchType.LAZY, targetEntity = Order.class)
@JoinTable(name = "ORDER_LINE",
joinColumns = @JoinColumn(name = "PRODUCT_ID"),
inverseJoinColumns = @JoinColumn(name = "ORDER_ID"))
private List<Order> orderList;
}
@Entity
@Table(name = "ORDER")
public class Order {
@Id
@Column(name = "ORDER_ID")
private Long orderId;
}
@Entity
@Table(name = "PRODUCT_EDIBLE")
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
@AssociationOverrides({
@AssociationOverride(name = "orderList", joinTable = @JoinTable(name = "AT_ORDER_PRODUCT_EDIBLE",
joinColumns = @JoinColumn(name = "PRODUCT_ID", foreignKey = @ForeignKey(name = "FK_ATOPE_PRODUCT_EDIBLE")),
inverseJoinColumns = @JoinColumn(name = "ORDER_ID", foreignKey = @ForeignKey(name = "FK_ATOPE_PRODUCT_ORDER"))))
})
public class ProductEdible extends Product {
}
the following schema is generated: create table AT_ORDER_PRODUCT_EDIBLE (PRODUCT_ID bigint not null, ORDER_ID bigint not null) create table ORDER (ORDER_ID bigint not null, primary key (ORDER_ID)) create table PRODUCT_EDIBLE (PRODUCT_ID bigint not null, primary key (PRODUCT_ID)) alter table AT_ORDER_PRODUCT_EDIBLE add constraint FKdf4hugoowbewaquofp33qo2nr foreign key (ORDER_ID) references ORDER alter table AT_ORDER_PRODUCT_EDIBLE add constraint FKfhgnfkg0n1wvo4kho92awenu0 foreign key (PRODUCT_ID) references PRODUCT_EDIBLE |