Example usage for org.hibernate.persister.entity EntityPersister setPropertyValue

List of usage examples for org.hibernate.persister.entity EntityPersister setPropertyValue

Introduction

In this page you can find the example usage for org.hibernate.persister.entity EntityPersister setPropertyValue.

Prototype

void setPropertyValue(Object object, int i, Object value);

Source Link

Document

Set the value of a particular property

Usage

From source file:org.babyfish.hibernate.internal.SessionImplWrapper.java

License:Open Source License

@SuppressWarnings("unchecked")
protected static void delete(XSessionImplementor sessionProxy, Object object) {
    if (object != null) {
        SessionFactory sessionFactory = sessionProxy.getRawSessionImpl().getSessionFactory();
        PersistenceContext persistenceContext = ((org.hibernate.internal.SessionImpl) sessionProxy
                .getRawSessionImpl()).getPersistenceContext();
        Map<PersistentCollection, CollectionEntry> collectionEntries = persistenceContext
                .getCollectionEntries();
        for (Entry<PersistentCollection, CollectionEntry> entry : collectionEntries.entrySet()) {
            PersistentCollection persistentCollection = entry.getKey();
            if (persistentCollection.wasInitialized()) {
                CollectionMetadata collectionMetadata = sessionFactory
                        .getCollectionMetadata(persistentCollection.getRole());
                Class<?> elementClass = collectionMetadata.getElementType().getReturnedClass();
                if (elementClass.isAssignableFrom(object.getClass())) {
                    if (persistentCollection instanceof Map<?, ?>) {
                        ((Map<?, ?>) persistentCollection).values().remove(object);
                    } else if (persistentCollection instanceof Collection<?>) {
                        ((Collection<?>) persistentCollection).remove(object);
                    }/*from  w  ww  .j a  va2s. c o m*/
                }
            }
        }
        Class<?> clazz = object.getClass();
        Collection<HbmReference> hbmReferences = null;
        NavigableMap<Class<?>, Collection<HbmReference>> hbmReferencesByTargetClass = (NavigableMap<Class<?>, Collection<HbmReference>>) ((XSessionFactoryImplementor) sessionProxy
                .getFactory()).getInternalData(SessionFactoryImplWrapper.IDK_HBM_REFERENCES_BY_TARGET_CLASS);
        for (Entry<Class<?>, Collection<HbmReference>> entry : hbmReferencesByTargetClass.descendingMap()
                .entrySet()) {
            if (entry.getKey().isAssignableFrom(clazz)) {
                hbmReferences = entry.getValue();
                break;
            }
        }
        if (hbmReferences != null) {
            EntityReferenceComparator<? super Object> referenceComparator = EntityReferenceComparator
                    .getInstance();
            Entry<Object, EntityEntry>[] entityEntries = persistenceContext.reentrantSafeEntityEntries();
            if (entityEntries != null) {
                for (Entry<Object, EntityEntry> entry : entityEntries) {
                    Object entity = entry.getKey();
                    if (Hibernate.isInitialized(entity)) {
                        EntityPersister persister = entry.getValue().getPersister();
                        ClassMetadata classMetadata = persister.getClassMetadata();
                        for (HbmReference hbmReference : hbmReferences) {
                            if (hbmReference.ownerMetadata == classMetadata) {
                                Object expectedObject = persister.getPropertyValue(entity,
                                        hbmReference.propertyIndex);
                                if (referenceComparator.same(expectedObject, object)) {
                                    persister.setPropertyValue(entity, hbmReference.propertyIndex, null);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
    sessionProxy.getRawSessionImpl().delete(object);
}

From source file:org.grails.orm.hibernate.support.ClosureEventListener.java

License:Apache License

private void synchronizePersisterState(AbstractPreDatabaseOperationEvent event, Object[] state) {
    Object entity = event.getEntity();
    EntityPersister persister = event.getPersister();

    String[] propertyNames = persister.getPropertyNames();
    HashMap<Integer, Object> changedState = new HashMap<Integer, Object>();
    for (int i = 0; i < propertyNames.length; i++) {
        String p = propertyNames[i];
        MetaProperty metaProperty = domainMetaClass.getMetaProperty(p);
        if (ClosureEventTriggeringInterceptor.IGNORED.contains(p) || metaProperty == null) {
            continue;
        }/*from   w ww . j av a  2s .co m*/
        Object value = metaProperty.getProperty(entity);
        if (state[i] != value) {
            changedState.put(i, value);
        }
        state[i] = value;
        persister.setPropertyValue(entity, i, value);
    }

    synchronizeEntityUpdateActionState(event, entity, changedState);
}

From source file:org.web4thejob.orm.event.EventUtil.java

License:Open Source License

public static <E extends Entity> void assignValue(E entity, int index, Object value, EntityPersister persister,
        Object[] state) {//from   ww  w. jav  a 2s  .co  m
    state[index] = value;
    persister.setPropertyValue(entity, index, value);
}