在一些关系中将一个字段作为复合键的一部分进行休眠

时间:2016-12-02 07:21:51

标签: java hibernate

所以问题是如何将公司源系统列定义为许多组合键的一部分,以便全部启用级联。在此示例中,我具有与某个客户端实体相关的实体类型和状态。每个实体都有全局标识“company_source_system”。在客户端我不想为每个关系复制此列,所以我只创建了一个列,这就是问题,因为你可以看到两个连接列注释都包含“company_source_system”所以我需要添加insertable / updatable = false(这会打破保存事务结束时的类型和状态,即使设置了这些字段,hiberante也不会插入这些值...)。那么如何在这个例子中摆脱insertable / updatable = false?我想自动保存类型/状态......

@ManyToOne
@JoinColumns({
    @JoinColumn(insertable = false, insertable = false, name = "type", referencedColumnName = "id"),
    @JoinColumn(insertable = false, insertable = false, name = "company_source_system", referencedColumnName = "company_own_id")
})
private Type type;

@ManyToOne
@JoinColumns({
    @JoinColumn(insertable = false, insertable = false, name = "status", referencedColumnName = "id"),
    @JoinColumn(insertable = false, insertable = false, name = "company_source_system", referencedColumnName = "company_own_id")
})
private Status status;
当我设置insertable / updatatble = true

时出现

错误

Repeated column in mapping for entity: Client column: company_source_system (should be mapped with insert="false" update="false")

0 个答案:

没有答案