【问题标题】:Hibernate Composite Key - add another key from @JoinColumnsHibernate Composite Key - 从@JoinColumns 添加另一个键
【发布时间】:2024-04-26 04:40:01
【问题描述】:

所以,我有以下实体:

@Entity
public class EntityOne{

    @EmbeddedId
    private EntityOneIdentity entityOneIdentity;


    @ManyToOne
    @JoinColumns(value = {
            @JoinColumn(name = "MerchantID", referencedColumnName = "MerchantID"),
            @JoinColumn(name = "TenantID", referencedColumnName = "TenantID")})
    private Merchant merchant;
 .......
}

使用身份(复合键):

@Embeddable
public class EntityOneIdentity implements Serializable {

    @Column(name = "EntityID")
    private String entityID;

    @Column(name = "TenantID")
    private String tenantID;
....
}

我的挑战是我需要来自 Merchant Entity 的 @JoinColumn("TenantID") 也是我的 EntityOne 中的一个 PK(只是tenantId!“MerchantId”将保持原样)。我发现的唯一东西是@MapId 注释,但这会将@JoinColumns 中提到的两个 FK 添加到我想要的主键中。

提前谢谢你!

【问题讨论】:

  • 尝试使用@JoinColumn("TenantID", insertable=false, updatable=false)

标签: java hibernate jpa hibernate-mapping


【解决方案1】:

通过将 @JoinColumns 标记为 insertable/updatebla false 并创建一个额外的 MerchantId 字段来解决它,该字段的值是我在商家设置器中设置的

【讨论】: