在事务中通过hibernate删除后仍然可以选择实体

时间:2017-06-15 06:45:39

标签: java spring hibernate transactions

我有一种通过hibernate删除记录的方法。我删除后添加一个查询。删除的记录仍在结果列表中。它不应该。这是代码。

@Transactional
public void deleteFoo(long fooId){
    Foo foo = fooDao.find(fooId);
    fooDao.delete(foor);
    List<Foo> brothers = fooDao.findByParentId(foo.getParentId());
    // I think the brothers does not contains foo.
    // Unfortunately, foo is still in the list.
    // I do not know why and how to make sure the brothers does not contains foo.
    ...
}

从事务提交的数据库中删除记录。

1 个答案:

答案 0 :(得分:1)

你应该刷新休眠会话。

当您通过Hibernate使用数据库时,您正在使用Hibernate会话。

Hibernate会话通过以下三种情况刷新到数据库。

  • commit() - 提交事务时
  • 运行查询之前
  • 当你调用session.flush()

或者您可以通过

手动刷新它
session.flush()