问题描述
我有三个表,一个是学生表,另一个是主题表,另一个是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 (将#修改为@)