微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用外键移动和更新休眠实体

如何解决使用外键移动和更新休眠实体

我有三个表,一个是学生表,另一个主题表,另一个是stud_sub_map表。我有一个要求,例如为所有3个表创建一个临时表,并使用一个名为sessionId的额外参数,将这些表中3个表中的所有数据移到那里,然后在处理后再次用主表中的更改将其填充回去。下面给出了每个表及其实体的结构

Student.java

@Entity
@Table(name = "STUDENT")
public class Student {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ")
    @SequenceGenerator(name = "SEQ",sequenceName = "STUD_SEQ",allocationSize = 1)
    @Column(name = "ID")
    private int id;
    @Column(name = "student_name")
    private String studentName = null;
    
    @OnetoMany
    @JoinTable(name = "STUD_SUB_MAP",joinColumns = { @JoinColumn(name = "STUD_ID",insertable =  false,updatable = false) },inverseJoinColumns = { @JoinColumn(name = "SUB_ID",updatable = false) })
    @JsonIgnore
    private Set<Subject> subject = new HashSet<Subject>();
    //Some other Info and Getters and Setters
}

Subject.java

    @Entity
    @Table(name = "SUBJECT")
    public class Subject {

        @GeneratedValue(strategy = GenerationType.SEQUENCE,generator = "SEQ")
        @SequenceGenerator(name = "SEQ",sequenceName = "SUB_SEQ",allocationSize = 1)
        @Column(name = "ID")
        @Id
        private int id;

        @Column(name = "subject_name")
        private String subjectName = null;
        
        @ManyToOne
        @JsonIgnore
        @JoinTable(name = "STUD_SUB_MAP",joinColumns = { @JoinColumn(name = "SUB_ID") },inverseJoinColumns = { @JoinColumn(name = "STUD_ID")})
        private Student student;
    }

STUD_SUB表没有主键。它只有两个外键(即STUD_ID和SUB_ID)。现在的问题是,我需要将所有三个表的副本分别复制到新表STUDENT_TEMP,SUBJECT_TEMP和STUD_SUB_MAP_TEMP表中,为了保存,我必须将它们保存回去。问题是如果没有映射表(即STUD_SUB_MAP),我可以轻松使用getter和setter,在新实体中设置值以将数据从主表传输到temp表,一旦处理完成,我就可以更新更改到主表。现在,在这种情况下,由于映射表也涉及其中,因此我无法弄清楚该怎么做。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。