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