如何解决使用外键移动和更新休眠实体
我有三个表,一个是学生表,另一个是主题表,另一个是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 举报,一经查实,本站将立刻删除。