我有 Hibernate 和 Ehcache 提供的二级缓存。
我有Parent
和Child
类,有Parent.children
缓存的集合。
当我执行以下代码时:
Session session = DataSessionFactory.openSession();
Transaction tx = session.beginTransaction();
Parent parent = // load from Session
Child child = new Child();
child.setParent(parent);
session.saveOrUpdate(child);
session.flush();
session.refresh(parent);
tx.rollback();
session.close();
session = DataSessionFactory.openSession();
tx = session.beginTransaction();
parent = session.load(Parent.class, parent.getId());
System.out.println(parent.getChildren());
最后一行失败并出现异常,尝试加载Child
不存在的内容。经过调查,我发现原因是它正在尝试加载Child
在上一个事务中创建并回滚的内容。
配置缓存或回滚事务的正确方法是什么,以便正确清除集合缓存?我不想在回滚时清除所有集合缓存,谢谢。寻找一种方法让 Hibernate 或 Ehcache 为我做这件事,影响最小。