Example usage for org.hibernate.persister.collection AbstractCollectionPersister getCollectionMetadata

List of usage examples for org.hibernate.persister.collection AbstractCollectionPersister getCollectionMetadata

Introduction

In this page you can find the example usage for org.hibernate.persister.collection AbstractCollectionPersister getCollectionMetadata.

Prototype

@Override
    public CollectionMetadata getCollectionMetadata() 

Source Link

Usage

From source file:org.eclipse.emf.teneo.hibernate.mapping.elist.HbExtraLazyPersistableEMap.java

License:Open Source License

@SuppressWarnings("unchecked")
@Override//  w ww . ja  va  2 s.  com
public V get(Object key) {
    // do a lazy get
    if (key != null && !isLoaded() && isHibernateListPresent()) {
        final Session session = getSession();

        session.flush();

        // create a query 
        final AbstractPersistentCollection collection = (AbstractPersistentCollection) getDelegate();
        final CollectionEntry collectionEntry = ((SessionImplementor) session).getPersistenceContext()
                .getCollectionEntry(collection);
        final AbstractCollectionPersister persister = (AbstractCollectionPersister) collectionEntry
                .getLoadedPersister();
        final String entityName = ((EntityType) persister.getCollectionMetadata().getElementType())
                .getAssociatedEntityName();
        final Query qry = session.createQuery("select e from " + entityName + " as e where e.key=:key and e."
                + StoreUtil.getExtraLazyInversePropertyName(getEStructuralFeature()) + "=:owner");
        qry.setParameter("key", key);
        qry.setParameter("owner", getOwner());
        final Object result = qry.uniqueResult();
        if (result instanceof Map.Entry<?, ?>) {
            final Map.Entry<K, V> entry = (Map.Entry<K, V>) result;
            return entry.getValue();
        }
        return null;
    }
    // TODO Auto-generated method stub
    return super.get(key);
}