Jpa 如果坚持,多对多什么都不会发生?

Jpa 如果坚持,多对多什么都不会发生?,jpa,many-to-many,Jpa,Many To Many,嗨,我有两门课Professor2.java和Projects2.java。这些是我的实体类,它们与多对多关系相关。这是我的Professor2课程的一部分,我在这里声明Project2实例列表 @ManyToMany private List<Projects2> projects = new ArrayList(); public List<Projects2> getProjects() { return projects; } public vo

嗨,我有两门课Professor2.java和Projects2.java。这些是我的实体类,它们与多对多关系相关。这是我的Professor2课程的一部分,我在这里声明Project2实例列表

   @ManyToMany
private List<Projects2> projects = new ArrayList();

public List<Projects2> getProjects() {
    return projects;
}

public void setProjects(List<Projects2> projects) {
    this.projects = projects;
}

问题是,第三个表是联接表(按照我首先创建实体类,然后从实体类创建数据库的方式),其中没有显示任何数据。您认为问题出在哪里。

请添加您的联接表。对于双向many2many,必须将元素添加到关系两侧的两个集合中。考虑用SET替换列表(因此,在添加之前,您不必检查实体是否已经存在),并且在AddPrand PrdJ中执行持久操作之前,强制JPA使用EM.FIN()来检索对象的最新版本。是的,谢谢。强制JPA使用em.find()检索对象的最新版本。。。。。乐观锁定???悲观实际上这就是我要说的。。。在更新之前检索最新版本就像“杀死”乐观锁。。。不
           @ManyToMany(mappedBy = "projects",cascade = CascadeType.PERSIST)
private List<Professor2> professor2s;

public List<Professor2> getProfessor2s() {
    return professor2s;
}

public void setProfessor2s(List<Professor2> professor2s) {
    this.professor2s = professor2s;
}
  public void addProfessor(Professor2 prof) 
   {
    if (!getProfessor2s().contains(prof)) 
    {
      getProfessor2s().add(prof);
    }
    if (!prof.getProjects().contains(this)) 
    {
      prof.getProjects().add(this);
    }
} 
      public void addProfAndProj(Professor2 p1 ,Projects2 p2)
{

    EntityManager em = emf.createEntityManager();
    p2.addProfessor(p1);
    try{
        em.getTransaction().begin();
        em.persist(p2);
        em.getTransaction().commit();
    } finally{
        em.close();
    }

}