我试图使用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.
答案 0 :(得分:2)
嗯,问题正是消息所说的内容:您无法在p.exams
查询中引用关联字段(在您的案例中为UPDATE
)。
这是建立联系的一种相当复杂的方式。为什么不简单地按Prof
查询idUser
并设置p.exams
的值? JPA将负责其余部分。