我在JavaEE中有一个项目,我的任务是影响教授使用某种表格(学生安置表格),我有一个名为“ nb_sup”的属性,该属性是由选定教授监督的学生人数,该数量为教授每次受到学生的影响时,加一。问题是无论我影响同一位教授多少次,我的函数都会将“ nub_sup”设置为一个。
这是我的代码
public void SetNbSupPrfessor(Professor prof)
{
Query query = em.createQuery("update Professor u set nb_sup=:nb_sup WHERE u.id =:id");
query.setParameter("nb_sup", (1+ prof.getNb_sup()));
query.setParameter("id",prof.getId() );
query.executeUpdate();
}
可以肯定地说,教授是从“用户”实体继承的,“ nb_sup”的类型是int,“ id”是自动增量。
我编辑了代码,使该代码可以正常工作
Professor prof = em.createQuery("select p from Professor p where p.id = :id",Professor.class)
.setParameter("id",id)
.getSingleResult();
prof.setNb_sup(prof.getNb_sup()+1);
em.merge(prof);