From: <hib...@li...> - 2006-05-05 20:50:36
|
Author: max...@jb... Date: 2006-05-05 16:50:27 -0400 (Fri, 05 May 2006) New Revision: 9897 Modified: trunk/Hibernate3/src/org/hibernate/action/BulkOperationCleanupAction.java Log: HHH-870 support SQL updates in named queries + synchronize on everything if no synchronize is specified. Modified: trunk/Hibernate3/src/org/hibernate/action/BulkOperationCleanupAction.java =================================================================== --- trunk/Hibernate3/src/org/hibernate/action/BulkOperationCleanupAction.java 2006-05-05 20:29:41 UTC (rev 9896) +++ trunk/Hibernate3/src/org/hibernate/action/BulkOperationCleanupAction.java 2006-05-05 20:50:27 UTC (rev 9897) @@ -57,40 +57,39 @@ public BulkOperationCleanupAction(SessionImplementor session, Set querySpaces) { this.session = session; - if(querySpaces!=null && !querySpaces.isEmpty()) { - Set tmpSpaces = new HashSet(querySpaces); - SessionFactoryImplementor factory = session.getFactory(); - Iterator iterator = factory.getAllClassMetadata().entrySet().iterator(); - while ( iterator.hasNext() ) { - Map.Entry entry = (Map.Entry) iterator.next(); - String entityName = (String) entry.getKey(); - EntityPersister persister = factory.getEntityPersister( entityName ); - Serializable[] entitySpaces = persister.getQuerySpaces(); + Set tmpSpaces = new HashSet(querySpaces); + SessionFactoryImplementor factory = session.getFactory(); + Iterator iterator = factory.getAllClassMetadata().entrySet().iterator(); + while ( iterator.hasNext() ) { + Map.Entry entry = (Map.Entry) iterator.next(); + String entityName = (String) entry.getKey(); + EntityPersister persister = factory.getEntityPersister( entityName ); + Serializable[] entitySpaces = persister.getQuerySpaces(); - if (affectedEntity( querySpaces, entitySpaces )) { - if ( persister.hasCache() ) { - affectedEntityNames.add( persister.getEntityName() ); - } - Set roles = session.getFactory().getCollectionRolesByEntityParticipant( persister.getEntityName() ); - if ( roles != null ) { - affectedCollectionRoles.addAll( roles ); - } - for ( int y = 0; y < entitySpaces.length; y++ ) { - tmpSpaces.add( entitySpaces[y] ); - } + if (affectedEntity( querySpaces, entitySpaces )) { + if ( persister.hasCache() ) { + affectedEntityNames.add( persister.getEntityName() ); } - + Set roles = session.getFactory().getCollectionRolesByEntityParticipant( persister.getEntityName() ); + if ( roles != null ) { + affectedCollectionRoles.addAll( roles ); + } + for ( int y = 0; y < entitySpaces.length; y++ ) { + tmpSpaces.add( entitySpaces[y] ); + } } - this.spaces = (Serializable[]) tmpSpaces.toArray( new Serializable[tmpSpaces.size()] ); - } else { - // TODO: no synchronize info, sync on *all* ? - this.spaces = new Serializable[0]; } + this.spaces = (Serializable[]) tmpSpaces.toArray( new Serializable[tmpSpaces.size()] ); } + /** returns true if no queryspaces or if there are a match */ private boolean affectedEntity(Set querySpaces, Serializable[] entitySpaces) { + if(querySpaces==null || querySpaces.isEmpty()) { + return true; + } + for ( int i = 0; i < entitySpaces.length; i++ ) { if ( querySpaces.contains( entitySpaces[i] ) ) { return true; |