getProducer().flush();
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); final CollectionPersister persister = entry.getLoadedPersister(); if ( persister.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } return persister.indexExists( entry.getLoadedKey(), index, session ); } else { read(); } return null; } }
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); final CollectionPersister persister = entry.getLoadedPersister(); if ( persister.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } return persister.elementExists( entry.getLoadedKey(), element, session ); } else { read(); } return null; } }
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); if ( entry != null ) { final CollectionPersister persister = entry.getLoadedPersister(); if ( persister.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } cachedSize = persister.getSize( entry.getLoadedKey(), session ); return true; } else { read(); } } else{ throwLazyInitializationExceptionIfNotConnected(); } return false; } }
@Override protected void prepareForExecution() { if ( getSynchronizedQuerySpaces() != null && !getSynchronizedQuerySpaces().isEmpty() ) { // The application defined query spaces on the Hibernate NativeQuery // which means the query will already perform a partial flush // according to the defined query spaces, no need to do a full flush. return; } // otherwise we need to flush. the query itself is not required to execute // in a transaction; if there is no transaction, the flush would throw a // TransactionRequiredException which would potentially break existing // apps, so we only do the flush if a transaction is in progress. // // NOTE : this was added for JPA initially. Perhaps we want to only do // this from JPA usage? if ( shouldFlush() ) { getSession().flush(); } }
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); final PersistentCollectionDescriptor collectionDescriptor = entry.getLoadedCollectionDescriptor(); if ( collectionDescriptor.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } return collectionDescriptor.indexExists( entry.getLoadedKey(), index, session ); } else { read(); } return null; } }
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); final PersistentCollectionDescriptor collectionDescriptor = entry.getLoadedCollectionDescriptor(); if ( collectionDescriptor.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } return collectionDescriptor.elementExists( entry.getLoadedKey(), element, session ); } else { read(); } return null; } }
@Override public Boolean doWork() { final CollectionEntry entry = session.getPersistenceContext().getCollectionEntry( AbstractPersistentCollection.this ); if ( entry != null ) { final PersistentCollectionDescriptor collectionDescriptor = entry.getLoadedCollectionDescriptor(); if ( collectionDescriptor.isExtraLazy() ) { if ( hasQueuedOperations() ) { session.flush(); } cachedSize = collectionDescriptor.getSize( entry.getLoadedKey(), session ); return true; } else { read(); } } else{ throwLazyInitializationExceptionIfNotConnected(); } return false; } }