1
我有通过的Ehcache提供的2级高速缓存休眠。回滚和二级缓存收集
我有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以最小的影响为我做到这一点。
没错。如果没有“冲洗”它的作品,但不幸的是我后来真的需要它的一些选择。 – 2011-02-24 12:25:16
所以,我认为你唯一的选择是使用一些JTA提供者。 – jpkrohling 2011-02-24 13:53:10