protected boolean visitCollectionsBeforeSave( Object entity, Serializable id, Object[] values, Type[] types, EventSource source) { WrapVisitor visitor = new WrapVisitor( source ); // substitutes into values by side-effect visitor.processEntityPropertyValues( values, types ); return visitor.isSubstitutionRequired(); }
@Override Object processCollection(Object collection, CollectionType collectionType) throws HibernateException { if ( collection != null && ( collection instanceof PersistentCollection ) ) { final SessionImplementor session = getSession(); PersistentCollection coll = (PersistentCollection) collection; if ( coll.setCurrentSession( session ) ) { reattachCollection( coll, collectionType ); } return null; } else { return processArrayOrNewCollection( collection, collectionType ); } }
@Override Object processComponent(Object component, CompositeType componentType) throws HibernateException { if ( component != null ) { Object[] values = componentType.getPropertyValues( component, getSession() ); Type[] types = componentType.getSubtypes(); boolean substituteComponent = false; for ( int i = 0; i < types.length; i++ ) { Object result = processValue( values[i], types[i] ); if ( result != null ) { values[i] = result; substituteComponent = true; } } if ( substituteComponent ) { componentType.setPropertyValues( component, values, EntityMode.POJO ); } } return null; }
@Override void process(Object object, EntityPersister persister) throws HibernateException { final Object[] values = persister.getPropertyValues( object ); final Type[] types = persister.getPropertyTypes(); processEntityPropertyValues( values, types ); if ( isSubstitutionRequired() ) { persister.setPropertyValues( object, values ); } } }
@Override void processValue(int i, Object[] values, Type[] types) { Object result = processValue( values[i], types[i] ); if ( result != null ) { substitute = true; values[i] = result; } }
final Object processArrayOrNewCollection(Object collection, CollectionType collectionType) throws HibernateException { final SessionImplementor session = getSession();
@Override void process(Object object, EntityTypeDescriptor descriptor) throws HibernateException { final Object[] values = descriptor.getPropertyValues( object ); final List<PersistentAttributeDescriptor> persistentAttributes = descriptor.getPersistentAttributes(); processEntityPropertyValues( values, persistentAttributes ); if ( isSubstitutionRequired() ) { descriptor.setPropertyValues( object, values ); } } }
@Override void processValue(int i, Object[] values, Type[] types) { Object result = processValue( values[i], types[i] ); if (result!=null) { substitute = true; values[i] = result; } }
final Object processArrayOrNewCollection(Object collection, PersistentCollectionDescriptor collectionDescriptor) throws HibernateException { final SessionImplementor session = getSession();
private boolean wrapCollections( EventSource session, EntityPersister persister, Type[] types, Object[] values ) { if ( persister.hasCollections() ) { // wrap up any new collections directly referenced by the object // or its components // NOTE: we need to do the wrap here even if its not "dirty", // because collections need wrapping but changes to _them_ // don't dirty the container. Also, for versioned data, we // need to wrap before calling searchForDirtyCollections WrapVisitor visitor = new WrapVisitor( session ); // substitutes into values by side-effect visitor.processEntityPropertyValues( values, types ); return visitor.isSubstitutionRequired(); } else { return false; } }
@Override Object processCollection(Object collection, CollectionType collectionType) throws HibernateException { if ( collection!=null && (collection instanceof PersistentCollection) ) { final SessionImplementor session = getSession(); PersistentCollection coll = (PersistentCollection) collection; if ( coll.setCurrentSession(session) ) { reattachCollection( coll, collectionType ); } return null; } else { return processArrayOrNewCollection(collection, collectionType); } }
@Override void process(Object object, EntityPersister persister) throws HibernateException { final Object[] values = persister.getPropertyValues( object ); final Type[] types = persister.getPropertyTypes(); processEntityPropertyValues( values, types ); if ( isSubstitutionRequired() ) { persister.setPropertyValues( object, values ); } } }
@Override Object processComponent(Object component, CompositeType componentType) throws HibernateException { if (component!=null) { Object[] values = componentType.getPropertyValues( component, getSession() ); Type[] types = componentType.getSubtypes(); boolean substituteComponent = false; for ( int i=0; i<types.length; i++ ) { Object result = processValue( values[i], types[i] ); if (result!=null) { values[i] = result; substituteComponent = true; } } if (substituteComponent) { componentType.setPropertyValues( component, values, EntityMode.POJO ); } } return null; }
@Override void processValue(int i, Object[] values, PersistentAttributeDescriptor attribute) throws HibernateException{ Object result = processValue( values[i], attribute ); if ( result != null ) { substitute = true; values[i] = result; } }
final Object processArrayOrNewCollection(Object collection, CollectionType collectionType) throws HibernateException { final SessionImplementor session = getSession();
protected boolean visitCollectionsBeforeSave(Object entity, Serializable id, Object[] values, Type[] types, EventSource source) { WrapVisitor visitor = new WrapVisitor( source ); // substitutes into values by side-effect visitor.processEntityPropertyValues( values, types ); return visitor.isSubstitutionRequired(); }
@Override Object processCollection(Object collection, CollectionType collectionType) throws HibernateException { if ( collection!=null && (collection instanceof PersistentCollection) ) { final SessionImplementor session = getSession(); PersistentCollection coll = (PersistentCollection) collection; if ( coll.setCurrentSession(session) ) { reattachCollection( coll, collectionType ); } return null; } else { return processArrayOrNewCollection(collection, collectionType); } }
@Override void process(Object object, EntityPersister persister) throws HibernateException { final Object[] values = persister.getPropertyValues( object ); final Type[] types = persister.getPropertyTypes(); processEntityPropertyValues( values, types ); if ( isSubstitutionRequired() ) { persister.setPropertyValues( object, values ); } } }
@Override Object processComponent(Object component, CompositeType componentType) throws HibernateException { if (component!=null) { Object[] values = componentType.getPropertyValues( component, getSession() ); Type[] types = componentType.getSubtypes(); boolean substituteComponent = false; for ( int i=0; i<types.length; i++ ) { Object result = processValue( values[i], types[i] ); if (result!=null) { values[i] = result; substituteComponent = true; } } if (substituteComponent) { componentType.setPropertyValues( component, values, EntityMode.POJO ); } } return null; }
@Override void processValue(int i, Object[] values, Type[] types) { Object result = processValue( values[i], types[i] ); if (result!=null) { substitute = true; values[i] = result; } }