使用 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 会处理剩下的事情。
我正在尝试使用 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 会处理剩下的事情。