package net.techreadiness.persistence.dao;
import javax.persistence.TypedQuery;
import net.techreadiness.persistence.domain.ViewDefDO;
import org.springframework.stereotype.Repository;
@Repository
public class ViewDefDAOImpl extends BaseDAOImpl<ViewDefDO> implements ViewDefDAO {
@Override
public ViewDefDO getByEntityTypeAndScopePath(String entityTypeCode, Long scopeId) {
StringBuilder sb = new StringBuilder();
sb.append(" select vd ");
sb.append(" from ViewDefDO vd, ScopeTreeDO tree ");
sb.append(" where vd.scope = tree.ancestorScope");
sb.append(" and tree.scope.scopeId=:scopeId ");
sb.append(" and vd.viewDefType.entityType.code=:entityTypeCode ");
sb.append(" and vd.viewDefType.defaultView=true ");
sb.append(" order by tree.distance");
TypedQuery<ViewDefDO> query = em.createQuery(sb.toString(), ViewDefDO.class);
query.setParameter("entityTypeCode", entityTypeCode);
query.setParameter("scopeId", scopeId);
query.setMaxResults(1);
query.setHint("org.hibernate.cacheable", Boolean.TRUE);
return getSingleResult(query);
}
@Override
public ViewDefDO getByViewTypeAndScopePath(String viewTypeCode, Long scopeId) {
StringBuilder sb = new StringBuilder();
sb.append(" select vd ");
sb.append(" from ViewDefDO vd, ScopeTreeDO tree ");
sb.append(" where vd.scope = tree.ancestorScope");
sb.append(" and tree.scope.scopeId=:scopeId ");
sb.append(" and vd.viewDefType.code=:viewTypeCode ");
sb.append(" order by tree.distance");
TypedQuery<ViewDefDO> query = em.createQuery(sb.toString(), ViewDefDO.class);
query.setParameter("viewTypeCode", viewTypeCode);
query.setParameter("scopeId", scopeId);
query.setMaxResults(1);
query.setHint("org.hibernate.cacheable", Boolean.TRUE);
return getSingleResult(query);
}
}