Example usage for org.hibernate.type TypeHelper disassemble

List of usage examples for org.hibernate.type TypeHelper disassemble

Introduction

In this page you can find the example usage for org.hibernate.type TypeHelper disassemble.

Prototype

public static Serializable[] disassemble(final Object[] row, final Type[] types, final boolean[] nonCacheable,
        final SharedSessionContractImplementor session, final Object owner) 

Source Link

Document

Apply the Type#disassemble operation across a series of values.

Usage

From source file:com.corundumstudio.hibernate.dsc.DynamicQueryCache.java

License:Apache License

public void addResult(Map<String, Object> queryParams, Object queryResult, boolean uniqueResult,
        SessionImplementor session) {/*from   www.j a  v a  2s . c o  m*/
    QueryCacheValue entry = getQueryCacheTrasformed(queryParams);
    if (entry == null) {
        return;
    }
    List<Object> cacheable = (List<Object>) getRegion().get(entry.getKey());
    if (cacheable == null) {
        return;
    }
    if (uniqueResult) {
        Object ts = cacheable.get(0);
        cacheable.clear();
        cacheable.add(ts);
    }
    if (entry.getReturnTypes().length == 1) {
        Serializable cacheObject = entry.getReturnTypes()[0].disassemble(queryResult, session, null);
        cacheable.add(cacheObject);
    } else {
        Serializable[] cacheObject = TypeHelper.disassemble((Object[]) queryResult, entry.getReturnTypes(),
                null, session, null);
        cacheable.add(cacheObject);
    }
    getRegion().put(entry.getKey(), cacheable);
}

From source file:com.corundumstudio.hibernate.dsc.DynamicQueryCache.java

License:Apache License

public void removeResult(Map<String, Object> queryParams, Object queryResult, SessionImplementor session) {
    QueryCacheValue entry = getQueryCacheTrasformed(queryParams);
    if (entry == null) {
        return;// ww w.ja  v a 2 s.c o m
    }
    List<Object> cacheList = (List<Object>) getRegion().get(entry.getKey());
    if (cacheList == null) {
        return;
    }
    if (entry.getReturnTypes().length == 1) {
        Serializable deletedObject = entry.getReturnTypes()[0].disassemble(queryResult, session, null);
        cacheList.remove(deletedObject);
    } else {
        Serializable[] deletedObject = TypeHelper.disassemble((Object[]) queryResult, entry.getReturnTypes(),
                null, session, null);
        for (Iterator<Object> iterator = cacheList.iterator(); iterator.hasNext();) {
            Serializable[] object = (Serializable[]) iterator.next();
            if (Arrays.equals(object, deletedObject)) {
                iterator.remove();
            }
        }
    }
    getRegion().put(entry.getKey(), cacheList);
}