我对休眠很新。
我有以下表格:
合同
ContractID(PK), 其他栏目
提供商
ProviderID(PK),
其他栏目
ContractualAgreement ContractualAgreementID(PK), ContractID(FK), ProviderID(FK), 其他栏目
我正在使用以下hibernate注释:
**Contract.java**
{
private List<ContractualAgreement> contractualAgreements = new ArrayList<ContractualAgreement>();
@OneToMany(cascade= { javax.persistence.CascadeType.ALL },fetch= FetchType.LAZY)
@JoinColumn (name="ContractID", updatable=false,insertable=false)
public List<ContractualAgreement> getContractualAgreements() {
return this.contractualAgreements;
}
}
**Provider.java**
{
private List<ContractualAgreement> contractualAgreements = new ArrayList<ContractualAgreement>();
@OneToMany(cascade= { javax.persistence.CascadeType.ALL },fetch= FetchType.LAZY)
@JoinColumn (name="ProviderID", updatable=false,insertable=false,nullable=false)
public List<ContractualAgreement> getContractualAgreements() {
return this.contractualAgreements;
}
}
}
**ContractualAgreement.java**
{
@Id
@Column(name = "ContractualAgreementID", unique = true, nullable = false)
public long getContractualAgreementId() {
return this.contractualAgreementId;
}
public void setContractualAgreementId(long contractualAgreementId) {
this.contractualAgreementId = contractualAgreementId;
}
@ManyToOne(fetch= FetchType.LAZY)
@JoinColumn(name = "ProviderID",updatable=false,insertable=false,nullable=false)
public Provider getProvider() {
return this.provider;
}
public void setProvider(Provider provider) {
this.provider = provider;
}
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="ContractID",updatable=false,insertable=false,nullable=false)
public Contract getContract() {
return this.contract;
}
}
我按以下顺序填充数据:
我尝试使用saveOrUpdate保存提供程序。
现在它确实将提交者,contractualagreement表中的数据与contractualagreemtent表中的适当的providerid一起保存,但它不会将数据保存在合同表中。
有谁可以指出我做错了什么?
任何帮助表示感谢。
答案 0 :(得分:0)
你做错了很多事。
首先;合同协议表只是一个连接表。它没有任何其他功能列,因此用于实现合同和提供者之间的关联。因此,这个表应该
您应该在Contract和Provider之间建立ManyToMany关联。 ManyToMany关联将使用ContractualAgreement表进行映射。
代码中的其他问题:
insertable = false, updateable = false
。如果没有任何东西可以插入或更新,那么这些列将如何填充?OneToMany(mappedBy = "thePropertyOnTheOtherSide")
。 所有这些都在Hibernate参考手册中有详细描述。 Read it