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
映射影响值,而无需更改注释。