所以我有以下代码来更新表。
@Override
public SalarySupplementModel update(SalarySupplementModel obj) {
EntityManager em = super.getEntityManager();
Query qry = em.createQuery("UPDATE SalarySupplementModel s "
+ "SET s.advanceDeduction = :adv, s.cit = :cit, s.allowance = :ia, "
+ "s.specialAllowance = :isp, s.insurance = :ins, s.others = :ot, "
+ "s.tds = :tds, s.transportAllowance = :ta, "
+ "s.vehicleDeduction = :vd WHERE s.salSupId = :sid");
qry.setParameter("adv", obj.getAdvanceDeduction());
qry.setParameter("cit", obj.getCit());
qry.setParameter("ia", obj.getAllowance());
qry.setParameter("isp", obj.getSpecialAllowance());
qry.setParameter("ins", obj.getInsurance());
qry.setParameter("ot", obj.getOthers());
qry.setParameter("tds", obj.getTds());
qry.setParameter("ta", obj.getTransportAllowance());
qry.setParameter("vd", obj.getVehicleDeduction());
qry.setParameter("sid", obj.getSalSupId());
qry.executeUpdate();
return obj;
}
但是,在我保存之后,直到我重新启动服务器才会显示更新。
我到底错过了什么?
答案 0 :(得分:1)
您可能在L2缓存中有一个陈旧版本的对象,并且因为您通过JPQL执行更新,所以它不会反映到缓存中。检查更改时尝试刷新实例
SalarySupplementModel ssm = em.find(SalarySupplementModel.class, ssm.getId());
em.refresh(ssm);
在您期望新数据的方法中执行此操作。