首页 > 解决方案 > 具有休眠状态的实体的映射中的重复列

问题描述

我正在使用hibernate做一个项目。我的映射有问题。我收到了这个错误:

Caused by: org.hibernate.MappingException: Repeated column in mapping for entity: org.el_dao.entity.Save column: idModel (should be mapped with insert="false" update="false")

这是实体:

@Embeddable
public class SaveId implements Serializable{

    private static final long serialVersionUID = 1L;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "login", referencedColumnName = "login")
    private User login;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = "idStep", referencedColumnName = "idStep", insertable=false, updatable=false),
        @JoinColumn(name = "idModel3", referencedColumnName = "idModel", insertable=false, updatable=false),
        @JoinColumn(name = "idPart2", referencedColumnName = "idPart", insertable=false, updatable=false),
        @JoinColumn(name = "idPiece", referencedColumnName = "idPiece", insertable=false, updatable=false)
    })
    private Step idStep;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumns({
        @JoinColumn(name = "idPart", referencedColumnName = "idPart", insertable=false, updatable=false),
        @JoinColumn(name = "idModel", referencedColumnName = "idModel", insertable=false, updatable=false)
    })
    private Part idPart;

    @ManyToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "idModel", referencedColumnName = "idModel", insertable=false,  updatable=false)
    private Model idModel;

以及使用前一个的实体:

@Entity
@Proxy(lazy = false)
@Table(name = "save", schema = "public")
public class Save implements Serializable{

    private static final long serialVersionUID = 1L;

    /**
     * Save's id
     */
    @EmbeddedId
    private SaveId saveId;

我已经使用了几种没有结果的选择,例如在 false 中添加插入和更新。

标签: hibernate

解决方案


根据休眠文档:

嵌入对象的每个持久属性或字段都映射到实体的数据库表。

因此,在您的情况下,实体 Save 将有两个名为 idModel 的列,这就是休眠抱怨的原因。您应该更改连接列之一的名称,例如:

 @ManyToOne(fetch = FetchType.LAZY)
 @JoinColumn(name = "idModel2", referencedColumnName = "idModel", insertable=false,  updatable=false)
    private Model idModel;

推荐阅读