Próbuję zapisać do wielu baz danych przy użyciu hibernacji. Zamknąłem sesje zapisu i odczytu/zapisu w jednym obiekcie sesji. Jednak, gdy idę zapisać otrzymuję wiele błędów, które obiekty są już powiązane z innej sesji: „Nielegalne próbę skojarzenia zbiór z dwóch otwartych sesji”Hibernuj Zapisz obiekt na wiele sesji
Oto mój kod:
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);
}
}
Próbowałem eksmisji przedmiotu i zaczerwienienia; Jednak powoduje to problemy z "Wiersz został zaktualizowany lub usunięty przez inną transakcję" ... nawet jeśli obie sesje wskazują na różne bazy danych.
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);
}
}
Oprócz powyższego, również próbowałem użyć funkcji powielania hibernacji. Było to również nieudane bez błędów.
Czy ktoś pomyślnie zapisał obiekt w dwóch bazach danych o tym samym schemacie?
Czy jest możliwe, że zasady kaskadowe kolekcji powiązanych z odwzorowanym obiektem nie są poprawnie skonfigurowane? –