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

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

Introduction

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

Prototype

Object getVersion(Object object) throws HibernateException;

Source Link

Document

Get the version number (or timestamp) from the object's version property (or return null if not versioned)

Usage

From source file:org.granite.tide.hibernate4.HibernateDataChangePublishListener.java

License:Open Source License

private static Object getChange(EntityPersister persister, Session session, String entityName, Serializable id,
        Object entity) {//from   ww w .  j  av  a  2s. c om
    Number version = (Number) persister.getVersion(entity);
    String uid = getUid(persister, entity);
    if (uid == null)
        return null;

    Object change = null;
    for (EntityUpdate du : DataContext.get().getDataUpdates()) {
        if (du.entity instanceof Change) {
            if (du.type == EntityUpdateType.UPDATE && ((Change) du.entity).getClassName().equals(entityName)
                    && ((Change) du.entity).getId().equals(id)) {
                change = du.entity;
                break;
            }
        } else if (du.entity.getClass().getName().equals(entityName)
                && id.equals(persister.getIdentifier(entity, (SessionImplementor) session))) {
            change = du.entity;
            break;
        }
    }
    if (change == null) {
        change = new Change(entityName, id, version, uid);
        DataContext.addUpdate(EntityUpdateType.UPDATE, change, entity, 1);
    } else if (change instanceof Change)
        ((Change) change).updateVersion(version);
    return change;
}