我正在尝试编写显示数据库中用户的jsp网页。该页面正在正确运行。
例如,可以通过单击页面上的链接从数据库中删除用户,但不幸的是,用户仍然会在下一次加载页面时显示。重新加载页面后,用户就不见了。我在JPA课程中添加了@Cacheable(false)
,但没有任何改变。
为了更好地理解示例工作流程:
用户被移除,如:
Users user = em.find(Users.class, request.getParameter("uId"));
if (user != null) {
em.getTransaction().begin();
em.remove(user);
em.getTransaction().commit();
em.close();
}
加载用户:
EntityManager em = SessionUtil.createManager();
List<Users> usersList = em.createNamedQuery("Users.findAllOrdered", Users.class).setParameter("uId", Integer.parseInt(request.getParameter("lastID"))).setFirstResult(0).setMaxResults(10).getResultList();
有人能告诉我什么是错的吗?
答案 0 :(得分:0)
我认为当您删除实体时,您的代码会抛出java.lang.IllegalArgumentException: Removing a detached instance
,并在您的事务中进行回滚。这是因为您在不同的持久化上下文中加载和删除此实体。
您是否尝试过调用交易中的find
?
em.getTransaction().begin();
Users user = em.find(Users.class, request.getParameter("uId"));
if (user != null) {
em.remove(user);
em.getTransaction().commit();
em.close();
}