Я сопоставил два класса в ассоциации ManyToMany с этими аннотациями:
@Entity
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public abstract class TechnicalItem extends GenericBusinessObject implements Resumable{
@SequenceGenerator(name="TECHNICAL_ITEM_ID_GEN", sequenceName="TECHNICAL_ITEM_ID_SEQ")
@Id
@Column(name = "\"ID\"", nullable = false)
@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "TECHNICAL_ITEM_ID_GEN")
private int id;
@ManyToMany(mappedBy = "referencePerformanceItems", fetch=FetchType.LAZY)
private List<TestingRate> testingRates;
}
@Entity
@DiscriminatorValue("T")
public class TestingRate extends Rate {
@ManyToMany(fetch=FetchType.LAZY)
@JoinTable(name="ecc.\"TESTING_RATE_TECHNICAL_ITEM\"",
joinColumns = {@JoinColumn(name = "\"TESTING_RATE_ID\"")},
inverseJoinColumns = {@JoinColumn(name = "\"TECHNICAL_ITEM_ID\"")})
//@ManyToMany(mappedBy = "testingRates", fetch=FetchType.LAZY)
private List<TechnicalItem> referencePerformanceItems;
}
SQL, созданный для создания таблицы ассоциации:
create table ecc."TESTING_RATE_TECHNICAL_ITEM" (
"TESTING_RATE_ID" int4 not null,
"TECHNICAL_ITEM_ID" int4 not null
);
alter table ecc."TESTING_RATE_TECHNICAL_ITEM"
add constraint FKC5D64DF6A2FE2698
foreign key ("TESTING_RATE_ID")
references ecc."RATE";
Нет упоминания о втором внешнем ключе "TECHNICAL_ITEM_ID" (вторая часть составного внешнего ключа, который должен быть в таблице ассоциации).
Это нормальное поведение?
Что я должен делать в отображении, если я хочу, чтобы мои 2 столбца были 2 внешними ключами, ссылающимися на первичные ключи моих 2 соответствующих таблиц.
Я использую базу данных PostGreSQL и Hibernate в качестве поставщика JPA.