现在看,我有几点:你有三个兴趣:学校,工作坊,老师。
学校有一个托马尼与车间&教师因此,一旦我们坚持上学,我们将在两个表中都有条目-工作坊和;老师。你也想
工作坊实体有一个单独的主办学校
所以我们在按照下面的代码进行持久化的同时也实现了这一点。
您的学校实体:
@Entity
public class School
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long ID;
@OneToMany(cascade = CascadeType.PERSIST, mappedBy="school")
private List<Teacher> teachers;
@OneToMany(cascade = CascadeType.PERSIST,mappedBy="school")
private List<Workshop> workshops;
// Getters and Setters and some methods
}
您的教师实体:
@Entity
public class Teacher
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="key")
private School school;
// Getters and Setters and some methods}
您的WorkShop实体:
@Entity
public class Workshop
{
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne(fetch=FetchType.LAZY)
@JoinColumn(name="key")
private School school;
然后:
em.getTransaction().begin();
School schoolObj = new School();
schoolObj.setName("School 1");
List <Teacher> teachers = new ArrayList<Teacher>();
List <Workshop> workshopList = new ArrayList<Workshop>();
Teacher teacher = new Teacher();
teacher.setSchool(schoolObj);
teacher.setName("Teacher 1");
teachers.add(teacher);
Teacher teacher1 = new Teacher();
teacher1.setSchool(schoolObj);
teacher1.setName("Teacher 2");
teachers.add(teacher1);
teacher teacher2 = new Teacher();
teacher2.setSchool(schoolObj);
teacher2.setName("Teacher 3");
teachers.add(teacher2);
Workshop ws = new Workshop();
ws.setSchool(schoolObj); //By this you setted schoolObj in workshop entity
ws.set(some attribute);
workshopList.add(ws);
school.setTeachers(teachers); //By this you setted teachers through school ,i.e., entry came in teachers table too.
school.setWorkshops(workshopList); //By this you setted workshopList through school ,i.e., entry came in workshop table too.
em.persist(schoolObj);
em.getTransaction().commit();
em.close();
现在你提到:WorkShop实体也有参与者列表。教师实体有参与者列表和就业历史列表。这表明您在车间和车间之间有很多人;教师正如您的案例,Workshop有教师列表,而教师也有Workshop的列表。因此,在这里,您需要一个加入表来建立这种ManyToMany关系。类似地,教师与学生之间;学校你有ManyToMany,因为这两个学校都有彼此的列表。所以在这里你也需要加入表格。要了解更多信息,请单击
here
.
因此,要设置此ManyToMany关系,必须通过连接表进行链接,而不是通过在此处进行持久化,因为这样会发生冲突。如果您想根据ManyToMany关系获取数据,那么您必须进行单独的查询。
希望这有帮助!