【发布时间】:2015-06-12 13:22:16
【问题描述】:
我正在尝试使用 hibernate 写入多个数据库。我在单个会话对象中封装了写和读/写会话。但是,当我去保存时,我收到很多错误,表明对象已经与另一个会话相关联:“非法尝试将集合与两个打开的会话相关联”
这是我的代码:
public class MultiSessionObject implements Session {
private Session writeOnlySession;
private Session readWriteSession;
@Override
public void saveOrUpdate(Object arg0) throws HibernateException {
readWriteSession.saveOrUpdate(arg0);
writeOnlySession.saveOrUpdate(arg0);
}
}
我尝试过驱逐对象并冲洗;但是,这会导致“行已被另一个事务更新或删除”的问题......即使两个会话都指向不同的数据库。
public class MultiSessionObject implements Session {
private Session writeOnlySession;
private Session readWriteSession;
@Override
public void saveOrUpdate(Object arg0) throws HibernateException {
readWriteSession.saveOrUpdate(arg0);
readWriteSession.flush();
readWriteSession.evict(arg0);
writeOnlySession.saveOrUpdate(arg0);
writeOnlySession.flush();
writeOnlySession.evict(arg0);
}
}
除了上述之外,我还尝试过使用 hibernate 的复制功能。这也是不成功的,没有错误。
是否有人成功地将对象保存到具有相同架构的两个数据库中?
【问题讨论】:
-
会不会是映射对象关联的集合的级联策略配置不正确?
标签: java hibernate session orm transactions