使用 JPQL 更新加入 table

update joined table using JPQL

我正在尝试使用 JPQL 更新连接项的值,但这对我不起作用。

我的实体Prof

@OneToMany (cascade = ALL)
    @JoinTable(name="jnt_Prof_Exam",
            joinColumns = @JoinColumn(name="idUser"), 
            inverseJoinColumns = @JoinColumn(name="idExam"))
    private List<Exam> exams;

我的更新代码

        EntityManagerFactory emf = Persistence.createEntityManagerFactory("QuizPU");
        EntityManager em = emf.createEntityManager();
        String req = "UPDATE Prof p SET p.exams = ?1 where p.idUser=?2";
        Query q = em.createQuery(req);
        q.setParameter(1, e);
        q.setParameter(2, idProf);
        q.executeUpdate();
        em.close();
        emf.close();

显示的异常是

An association field cannot be used in an update item's path expression.

好吧,问题正是消息所说的:您不能在 UPDATE 查询中引用关联字段(在您的情况下为 p.exams)。

这是一种相当复杂的建立协会的方式。为什么不简单地通过idUser查询Prof并设置p.exams的值呢? JPA 会处理剩下的事情。