【问题标题】:Referenced column is not working correct with @ManyToOne hibernate-mapping@ManyToOne hibernate-mapping 引用的列无法正常工作
【发布时间】:2017-02-07 08:44:14
【问题描述】:

我的映射 OneToMany 有问题。我的例外是 org.hibernate.MappingException:实体映射中的重复列:com.lcdut.model.SubjectsModel 列:组(应使用 insert="false" update="false" 进行映射)

如果我使用udpatetable或者insert 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;
}

【问题讨论】:

    标签: java hibernate-mapping


    【解决方案1】:
    @Column(name = "groups")
    private int groups;
    ...........
    @ManyToOne
    @JoinColumns({
        @JoinColumn(name = "groups", referencedColumnName = "id_group")
    })
    private StudentsModel studentsModel;
    ........
    

    这两个字段由同一列映射。你不需要private int groups;。删除它,一切都会正常。

    【讨论】:

    • 当我这样做时,我有另一个错误((引起:org.springframework.data.mapping.PropertyReferenceException:找不到类型SubjectsModel的属性组!
    【解决方案2】:

    如果我理解正确的方式,它应该是一个 1:n 关系,它应该像下面这样工作(列/外键 studentid 必须以 int 形式存在于数据库中):

        @Entity
        @Table(name = "subjects")
        public class SubjectsModel {
            @Id
            @GeneratedValue(strategy = GenerationType.AUTO)
            private int id;
    
            @ManyToOne
            @JoinColumn(name = "studentsid")
            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;
            @OneToMany(mappedBy = "studentsModel")
            private Set<SubjectsModel> subjects;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-08
      • 2012-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多