@Override public EntitySnapshot getLastEntitySnapshot(MetaClass metaClass, Object referenceId) { if (referenceId instanceof Entity) { throw new IllegalArgumentException(format("Reference id can not be an entity: %s", referenceId.getClass())); } MetaClass originalMetaClass = extendedEntities.getOriginalOrThisMetaClass(metaClass); View view = metadata.getViewRepository().getView(EntitySnapshot.class, "entitySnapshot.browse"); Transaction tx = persistence.createTransaction(); try { EntityManager em = persistence.getEntityManager(); TypedQuery<EntitySnapshot> query = em.createQuery( format("select e from sys$EntitySnapshot e where e.entityMetaClass = :metaClass and" + " e.entity.%s = :entityId order by e.snapshotDate desc", referenceToEntitySupport.getReferenceIdPropertyName(originalMetaClass)), EntitySnapshot.class) .setParameter("metaClass", originalMetaClass.getName()) .setParameter("entityId", referenceId) .setMaxResults(1) .setView(view); return query.getFirstResult(); } finally { tx.close(); } }