List of usage examples for org.hibernate.persister.entity SingleTableEntityPersister getEntityMetamodel
public EntityMetamodel getEntityMetamodel()
From source file:cc.alcina.framework.entity.impl.jboss.JPAHibernateImpl.java
License:Apache License
@Override public Set<HiliLocator> getSessionEntityLocators(EntityManager entityManager) { Set<HiliLocator> result = new LinkedHashSet<>(); try {//from w w w . ja v a 2s .com SessionImplementor sessionImpl = (SessionImplementor) entityManager.getDelegate(); PersistenceContext persistenceContext = sessionImpl.getPersistenceContext(); Field entitiesField = StatefulPersistenceContext.class.getDeclaredField("entitiesByKey"); Field proxiesField = StatefulPersistenceContext.class.getDeclaredField("proxiesByKey"); Field entityPersisterField = EntityKey.class.getDeclaredField("persister"); entitiesField.setAccessible(true); entityPersisterField.setAccessible(true); proxiesField.setAccessible(true); List<Map> maps = Arrays.asList((Map) entitiesField.get(persistenceContext), (Map) proxiesField.get(persistenceContext)); for (Map map : maps) { for (Object obj : map.keySet()) { EntityKey key = (EntityKey) obj; long id = (long) key.getIdentifier(); SingleTableEntityPersister persister = (SingleTableEntityPersister) entityPersisterField .get(key); Class clazz = persister.getEntityMetamodel().getEntityType().getReturnedClass(); result.add(new HiliLocator(clazz, id, 0)); } } } catch (Exception e) { e.printStackTrace(); } return result; }
From source file:com.github.kuros.random.jpa.metamodel.AttributeProvider.java
License:Open Source License
private List<String> getSupportedAttributeNames(final SingleTableEntityPersister singleTableEntityPersister) { final EntityMetamodel entityMetamodel = singleTableEntityPersister.getEntityMetamodel(); final NonIdentifierAttribute[] properties = entityMetamodel.getProperties(); final List<String> attributeNames = new ArrayList<String>(); for (NonIdentifierAttribute property : properties) { if (property.isInsertable()) { if (property instanceof EntityBasedAssociationAttribute) { final EntityBasedAssociationAttribute entityBasedAssociationAttribute = (EntityBasedAssociationAttribute) property; if (!(entityBasedAssociationAttribute .getAssociationNature() == AssociationAttributeDefinition.AssociationNature.ENTITY)) { continue; }/* w w w. j a v a 2 s . c o m*/ } attributeNames.add(property.getName()); } } final IdentifierProperty identifierProperty = entityMetamodel.getIdentifierProperty(); attributeNames.add(identifierProperty.getName()); return attributeNames; }