使用jpa编辑实体

使用jpa编辑实体,jpa,jakarta-ee,Jpa,Jakarta Ee,我试着用JPA编辑和编辑实体,我用了这个,但它什么都没做,为什么 public void editExam(Exam e) { Exam ex=getExam(e.getIdExam()); EntityManagerFactory emf = Persistence.createEntityManagerFactory("QuizPU"); EntityManager em = emf.createEntityManager();

我试着用JPA编辑和编辑实体,我用了这个,但它什么都没做,为什么

public void editExam(Exam e) {
        Exam ex=getExam(e.getIdExam());
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("QuizPU");
        EntityManager em = emf.createEntityManager();
        em.getTransaction().begin();
        ex.setQuestions(e.getQuestions());
        em.getTransaction().commit();
        em.close();
        emf.close();
    }
我正在尝试更改列表中的
问题
的值。
这就是我的
考试
实体类中的编码方式

    @OneToMany (cascade = ALL)
    @JoinTable(name="jnt_Exam_Question",
               joinColumns = @JoinColumn(name="idExam"), 
               inverseJoinColumns = @JoinColumn(name="idQuestion"))
    private List<Question> questions;

通过只创建一个
EntityManagerFactory

实例来解决问题,此时“ex”处于什么状态?由于其EntityManager已关闭,因此它已分离!您需要使用新的EntityManager将其合并。但这在任何JPA教程中都有。为什么要多次创建EntityManagerFactory?!!!!
public Exam getExam(Long idExam) {
        EntityManagerFactory emf = Persistence.createEntityManagerFactory("QuizPU");
        EntityManager em = emf.createEntityManager();
        String req1 ="select e from Exam e where e.idExam = ?1";
        Query q1 = em.createQuery(req1);
        q1.setParameter(1, idExam);
        Exam e =(Exam) q1.getSingleResult();
        em.close();
        emf.close();
        return e;
    }