我正在尝试使用Hibernate向多个数据库进行写操作。我已经将读写和写操作封装在一个单独的会话对象中。但是,当我尝试保存时,会出现许多错误,提示对象已与另一个会话相关联:"Illegal attempt to associate a collection with two open sessions"
以下是我的代码:
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的复制功能。但是,即使没有错误也无法成功保存。
有人成功地将对象保存到具有相同架构的两个数据库中吗?