package net.techreadiness.persistence.dao; import javax.persistence.TypedQuery; import net.techreadiness.persistence.domain.EntityDO; import org.springframework.stereotype.Repository; @Repository public class EntityDAOImpl extends BaseDAOImpl<EntityDO> implements EntityDAO { @Override public EntityDO getHighestPriority(Long scopeId, EntityDAO.EntityTypeCode typeCode) { StringBuilder sb = new StringBuilder(); sb.append(" select e "); sb.append(" from EntityDO e, ScopeTreeDO tree "); sb.append(" where e.scope = tree.ancestorScope"); sb.append(" and tree.scope.scopeId=:scopeId "); sb.append(" and e.entityType.code=:typeCode "); sb.append(" order by tree.ancestorDepth desc"); TypedQuery<EntityDO> query = em.createQuery(sb.toString(), EntityDO.class); query.setParameter("scopeId", scopeId); query.setParameter("typeCode", typeCode.toString()); query.setMaxResults(1); query.setHint("org.hibernate.cacheable", Boolean.TRUE); return getSingleResult(query); } }