[hibernate-commits] Hibernate SVN: r18866 - in core/trunk: testsuite/src/test/java/org/hibernate/test/immutable and 1 other directory.
hibernate-commits at lists.jboss.org
hibernate-commits at lists.jboss.org
Tue Feb 23 19:11:25 EST 2010
Author: gbadner
Date: 2010-02-23 19:11:24 -0500 (Tue, 23 Feb 2010)
New Revision: 18866
Modified:
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultAutoFlushEventListener.java
core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEventListener.java
core/trunk/testsuite/src/test/java/org/hibernate/test/immutable/ImmutableTest.java
Log:
HHH-4948 : Session.flush() does not always cascade save or update to read-only or immutable entities
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultAutoFlushEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultAutoFlushEventListener.java 2010-02-23 23:55:06 UTC (rev 18865)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultAutoFlushEventListener.java 2010-02-24 00:11:24 UTC (rev 18866)
@@ -92,7 +92,8 @@
private boolean flushMightBeNeeded(final EventSource source) {
return !source.getFlushMode().lessThan(FlushMode.AUTO) &&
source.getDontFlushFromFind() == 0 &&
- source.getPersistenceContext().hasNonReadOnlyEntities();
+ ( source.getPersistenceContext().getEntityEntries().size() > 0 ||
+ source.getPersistenceContext().getCollectionEntries().size() > 0 );
}
}
Modified: core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEventListener.java
===================================================================
--- core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEventListener.java 2010-02-23 23:55:06 UTC (rev 18865)
+++ core/trunk/core/src/main/java/org/hibernate/event/def/DefaultFlushEventListener.java 2010-02-24 00:11:24 UTC (rev 18866)
@@ -44,8 +44,9 @@
*/
public void onFlush(FlushEvent event) throws HibernateException {
final EventSource source = event.getSession();
- if ( source.getPersistenceContext().hasNonReadOnlyEntities() ) {
-
+ if ( source.getPersistenceContext().getEntityEntries().size() > 0 ||
+ source.getPersistenceContext().getCollectionEntries().size() > 0 ) {
+
flushEverythingToExecutions(event);
performExecutions(source);
postFlush(source);
@@ -53,7 +54,7 @@
if ( source.getFactory().getStatistics().isStatisticsEnabled() ) {
source.getFactory().getStatisticsImplementor().flush();
}
-
+
}
}
}
Modified: core/trunk/testsuite/src/test/java/org/hibernate/test/immutable/ImmutableTest.java
===================================================================
--- core/trunk/testsuite/src/test/java/org/hibernate/test/immutable/ImmutableTest.java 2010-02-23 23:55:06 UTC (rev 18865)
+++ core/trunk/testsuite/src/test/java/org/hibernate/test/immutable/ImmutableTest.java 2010-02-24 00:11:24 UTC (rev 18866)
@@ -280,7 +280,6 @@
// c was loaded into s, so it should be read-only
assertTrue( s.isReadOnly( c ) );
c.setCustomerName("foo bar");
- c.getVariations().add( new ContractVariation(3, c) );
cv1 = (ContractVariation) c.getVariations().iterator().next();
cv1.setText("blah blah");
// cv1 and cv2 were loaded into s by hibernate, so they should be read-only
@@ -350,7 +349,6 @@
// c was loaded into s, so it should be read-only
assertTrue( s.isReadOnly( c ) );
c.setCustomerName("foo bar");
- c.getVariations().add( new ContractVariation(3, c) );
cv1 = (ContractVariation) c.getVariations().iterator().next();
cv1.setText("blah blah");
// cv1 and cv2 were loaded into s by hibernate, so they should be read-only
More information about the hibernate-commits
mailing list