【发布时间】:2012-12-02 21:09:39
【问题描述】:
我正在处理旧系统,需要从数据库中读取一些信息。下面是表关系
供应商(vendorId - pk、vendorEid、名称)
VendorContactBridge (bridgeId -pk, vendorEid, contactEid)
联系人(contactId -pk、contactEid、电话)
vendorEid 和contactEid 不是表的主键,而是作为连接表VendorContactBridge 中的连接列使用。
供应商实体 -
@Entity
@Table(name="Vendor")
public class Vendor implements Serializable{
@Id
@Column(name="VENDORID")
private BigDecimal vendorId;
@Column(name="VENDOREID")
private BigDecimal vendorEid;
@OneToMany(fetch = FetchType.EAGER)
@JoinTable(name="VENDORCONTACTBRIDGE",
joinColumns={@JoinColumn(name="VENDOREID", referencedColumnName="VENDOREID")},
inverseJoinColumns={@JoinColumn(name="CONTACTEID", referencedColumnName="CONTACTEID")})
private Set<Contact> vendorContact;
}
联系实体 -
@Entity
@Table(name="CONTACT")
public class Contact implements Serializable{
@Id
@Column(name="CONTACTID")
private BigDecimal contactId;
@Column(name="CONTATEID")
private BigDecimal contactEId;
@ManyToOne
@JoinTable(name="VENDORCONTACTBRIDGE",
joinColumns={@JoinColumn(name="CONTACTEID", referencedColumnName="CONTATEID")},
inverseJoinColumns={@JoinColumn(name="VENDOREID", referencedColumnName="VENDOREID")})
private Vendor vendor;
}
在运行查询时,遇到异常
SecondaryTable JoinColumn 不能引用非主键。
我删除了我在供应商实体中提供的 Eager fetch,我没有收到任何异常,但它没有加载集合。关联有什么问题?
【问题讨论】:
标签: hibernate jpa one-to-many hibernate-onetomany