3
我與這些註釋的多對多的關聯映射兩類:JPA: - 許多一對多隻有一個關聯表的外鍵
@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提供程序。
感謝lexicore,我不知道「uniqueConstraint」參數。 但我想出了我的問題:我嘗試在多對多關係中包含抽象類「TechnicalItem」,而不是從「TechnicalItem」繼承的「PerformanceItem」類。 然後即使沒有「uniqueconstraint」參數,也會創建2個外鍵。 無論如何感謝, Julien – Julien 2010-04-14 09:12:02