List of usage examples for org.hibernate.persister.collection AbstractCollectionPersister getCollectionMetadata
@Override
public CollectionMetadata getCollectionMetadata()
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); }