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

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

Introduction

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

Prototype

VersionType getVersionType();

Source Link

Document

If #isVersioned() , then what is the type of the property holding the locking value.

Usage

From source file:com.utest.dao.UtestDeleteEventListener.java

License:Apache License

@SuppressWarnings("unchecked")
@Override/*  w ww  .  j  a v  a2s .c  o m*/
/**
 * Handle the given delete event.  This is the cascaded form.
 *
 * @param event The delete event.
 * @param transientEntities The cache of entities already deleted
 *
 * @throws HibernateException
 */
public void onDelete(DeleteEvent event, Set transientEntities) throws HibernateException {
    final EventSource source = event.getSession();

    final PersistenceContext persistenceContext = source.getPersistenceContext();
    Object entity = persistenceContext.unproxyAndReassociate(event.getObject());
    EntityEntry entityEntry = persistenceContext.getEntry(entity);

    final EntityPersister persister = source.getEntityPersister(event.getEntityName(), entity);
    final Object version;

    if (persister.isVersioned()) {
        version = persister.getVersion(entity, source.getEntityMode());
        // Make sure version has not changed on deleted entities
        if ((entity instanceof TimelineEntity) && !((TimelineEntity) entity).isNew()) {
            if (!persister.getVersionType().isEqual(version, entityEntry.getVersion())) {
                throw new StaleObjectStateException(persister.getEntityName(), entityEntry.getId());
            }
        }
    }
    super.onDelete(event, transientEntities);

}

From source file:com.utest.dao.UtestFlushEntityEventListener.java

License:Apache License

@Override
public void onFlushEntity(final FlushEntityEvent event) throws HibernateException {

    final Object object = event.getEntity();
    final EntityEntry entry = event.getEntityEntry();
    final EntityPersister persister = entry.getPersister();
    // final Status status = entry.getStatus();
    final SessionImplementor session = event.getSession();
    if (persister.isVersioned()) {
        final Object version = persister.getVersion(object, session.getEntityMode());
        // Make sure version has not changed on updated entities
        if ((object instanceof TimelineEntity) && !((TimelineEntity) object).isNew()) {
            if (!persister.getVersionType().isEqual(version, entry.getVersion())) {
                throw new StaleObjectStateException(persister.getEntityName(), entry.getId());
            }//from www  .  j  av a 2  s  . co  m
        }
    }
    super.onFlushEntity(event);
}