Vit*_*jok 9 java hibernate jpa jointable
我花了几个小时在周围搜索,并没有发现任何类似于我的情况.
让我们假设遵循多对多数据模型:
Contract (any business entity) - contract_id - other fields Party (another business entity) - party_id - other fields Contract_Party (relations between first two with additional role indicator, e.g. owner, signer, seller, etc) - contract_id - party_id - role
现在让我们假设我想要映射与党相关的所有合同(单向).可以使用Party实体类中的以下注释来完成:
@OneToMany
@JoinTable(
name="Contract_Party",
joinColumns = {@JoinColumn(name="party_id", referencedColumnName="party_id")},
inverseJoinColumns = {@JoinColumn(name="contract_id", referencedColumnName="contract_id")}
}
private List<Contract> contracts;
Run Code Online (Sandbox Code Playgroud)
那样就好.
但我正在寻找的是如何映射具有特定角色的合同?
@OneToMany
@??? ( "ROLE = 'SIGNER' ")
private List<Contract> signedContracts;
Run Code Online (Sandbox Code Playgroud)
从技术上讲,我正在寻找一种在JOIN语句中添加额外条件的方法.
到目前为止,在类似主题中发现了以
谢谢!
小智 19
您可以使用@WhereJoinTable注释.它适用于关联表
@OneToMany
@JoinTable(
name="Contract_Party",
joinColumns = {@JoinColumn(name="party_id",referencedColumnName="party_id")},
inverseJoinColumns = {@JoinColumn(name="contract_id", referencedColumnName="contract_id")}
}
@WhereJoinTable ( "ROLE = 'SIGNER' ")
private List<Contract> contracts;
Run Code Online (Sandbox Code Playgroud)