Bu davranışın ardındaki mantık nedir? nedense bir işlem dışında iki uygun işlemleri yürütmek durumundaNeden Hazırda bekletme işlemi yalnızca Otomatik Doldurma?
ikinci operasyon ise ben o kadar otomatik sifon beklenebilir, (önerilmez, ben! biliyorum) ve ben otomatik sifon için Hibernate yapılandırılmış ettik Otomatik deşarjı tetiklemelidir (list
, iterate
veya executeUpdate
).
protected boolean autoFlushIfRequired(Set querySpaces) throws HibernateException {
errorIfClosed();
if (! isTransactionInProgress()) {
// do not auto-flush while outside a transaction
return false;
}
AutoFlushEvent event = new AutoFlushEvent(querySpaces, this);
AutoFlushEventListener[] autoFlushEventListener = listeners.getAutoFlushEventListeners();
for (int i = 0; i < autoFlushEventListener.length; i++) {
autoFlushEventListener[i].onAutoFlush(event);
}
return event.isFlushRequired();
}
Güncelleme: değilse autoFlushIfRequried
yönteminin ikinci satırda açık kontrol için, ne olacağını tam olarak
bu istemde hazırda konuyu bulmak için size axtavt ederiz değiştir (3.2'de): FlushMode.AUTO -> COMMIT when outside a transaction.
İlgili bir sorun hala açık: delay IDENTITY insertions in the case of FlushMode.MANUAL/NEVER, ancak hiçbir tartışma "Bir işlemin dışında çalışırken, FlushMode.AUTO kötü bir şeydir."
_When_ Otomatik temizleme yapmayı bekliyor musunuz? – axtavt
@axtavt - Sorumu biraz daha spesifik olmak için güncelledim. Normalde otomatik olarak çalışan, "list", "yineleme" veya "executeUpdate" gibi bir işlemi gerçekleştirirsem otomatik olarak daralmasını beklerim. İşlemlerin yukarıdaki kodla ilişkisini anlamıyorum. –
Ben gördüm ve upvoted. Hazırda bekleyen çocuklar "bu kötü bir şey" diyor: http://opensource.atlassian.com/projects/hibernate/browse/HHH-1410 – axtavt