Tag: jointable

JPA。 JoinTable和两个JoinColumns

我需要创建表PORTATION_MODEL_SET。 我需要从表portation创建两个键,从table phone_model创建一个键 我有代码: @Entity @Table(name=”PORTATION”) @SecondaryTable(name=”PORTATION”) @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class JDBCPortation implements Portation { @Id @GeneratedValue(strategy=GenerationType.AUTO) private Integer id; @ManyToOne(targetEntity=JDBCContentMetaData.class, fetch=FetchType.LAZY) @JoinColumn(name=”fk_content_id”,nullable=false) private JDBCContentMetaData content; @ManyToMany(cascade={CascadeType.ALL},fetch=FetchType.LAZY,targetEntity=JDBCPhoneModel.class) @JoinTable( name=”PORTATION_MODEL_SET”, joinColumns={ @JoinColumn(table=”PORTATION”, name=”fk_portation_id”, referencedColumnName=”id”), @JoinColumn(table=”PORTATION”, name=”fk_content_id”, referencedColumnName=”fk_content_id”, nullable=true) }, inverseJoinColumns=@JoinColumn(table=”PHONE_MODEL”,name=”fk_phone_model_id”, referencedColumnName=”id”)) private List phoneModel; //more code….. } 和这个: @Entity @Table(name=”PHONE_MODEL”) @Cache(usage=CacheConcurrencyStrategy.NONSTRICT_READ_WRITE) public class JDBCPhoneModel implements PhoneModel { […]

具有额外连接条件的JPA @JoinTable

我花了几个小时在周围搜索,没有发现任何类似于我的情况。 让我们假设遵循多对多数据模型: 合同(任何商业实体) – contract_id – 其他领域 派对(另一个商业实体) – party_id – 其他领域 Contract_Party(前两者之间的关系 附加角色指示器,例如所有者,签名者,卖家等) – contract_id – party_id – 角色 现在让我们假设我想要映射与派对相关的所有合同(单向)。 可以使用Party实体类中的以下注释来完成: @OneToMany @JoinTable( name=”Contract_Party”, joinColumns = {@JoinColumn(name=”party_id”, referencedColumnName=”party_id”)}, inverseJoinColumns = {@JoinColumn(name=”contract_id”, referencedColumnName=”contract_id”)} } private List contracts; 没事儿。 但我正在寻找的是如何映射具有特定角色的合同? @OneToMany @??? ( “ROLE = ‘SIGNER’ “) private List signedContracts; 从技术上讲,我正在寻找一种在JOIN语句中添加额外条件的方法。 到目前为止,在类似主题中发现了以 将连接表映射为单独的实体,并使用自定义查询按角色执行过滤; Hibernate有@JoinFormula注释,但无法在@JoinTable中应用它; Hibernate也有@Where注释,但它为Contract表添加条件而不是连接表; 使用@MapKeyColumn并返回Map而不是List,但每个角色可以有多个合约; […]