映射中具有@ManytoOne注释和另一个引用的列名称的实体的重复列


I have a problem with my mapping OneToMany. My exception is 

org.hibernate.MappingException:实体映射中的重复列:com.lcdut.model.SubjectsModel 列:组(应使用 insert="false" update="false"( 映射(

@Entity
@Table(name = "subjects")
public class SubjectsModel {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int id;
    @Column(name = "groups")
    private int groups;
    ...........
    @ManyToOne
    @JoinColumns({
        @JoinColumn(name="groups", referencedColumnName="id_group")
    })
    private StudentsModel studentsModel;
    ........
}
@Entity
@Table(name = "students")
public class StudentsModel{
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Basic
    @Column(name = "pib")
    private String pib;
    @Basic
    @Column(name = "id_group")
    ........
    @OneToMany(mappedBy = "studentsModel")
    private Set<SubjectsModel> subjects;
}

您已经告诉 Hibernate,groups列的值来自基元属性groups以及关系映射studentsModel。 这是非法的,只有一个人可以影响价值。

您需要将groups映射指定为:

@Column(name = "groups", insertable = false, updatable = false)

或者,您可以指定studentsModel为:

@JoinColumn(
  name = "groups", 
  referencedColumnName = "id_group", 
  insertable = false, 
  updatable = false
)

或者最后删除基元属性并仅通过关系@ManyToOne映射影响值,而无需更改注释。

最新更新