Example usage for org.hibernate.criterion DetachedCriteria forClass

List of usage examples for org.hibernate.criterion DetachedCriteria forClass

Introduction

In this page you can find the example usage for org.hibernate.criterion DetachedCriteria forClass.

Prototype

public static DetachedCriteria forClass(Class clazz, String alias) 

Source Link

Document

Static builder to create a DetachedCriteria for the given entity, by its Class.

Usage

From source file:com.evolveum.midpoint.repo.sql.query.custom.ShadowQueryWithDisjunction.java

License:Apache License

@Override
public RQuery createQuery(ObjectQuery objectQuery, Class<? extends ObjectType> type,
        Collection<SelectorOptions<GetOperationOptions>> options, boolean countingObjects, Session session) {

    DetachedCriteria c1 = DetachedCriteria.forClass(ClassMapper.getHQLTypeClass(ShadowType.class), "s");
    c1.createCriteria("strings", "s1", JoinType.LEFT_OUTER_JOIN);

    ParsedQuery parsedQuery = parse(objectQuery);
    Conjunction conjunction = Restrictions.conjunction();
    conjunction// w  ww.j ava  2 s  .c  om
            .add(Restrictions.eq("resourceRef.targetOid", parsedQuery.refFilter.getValues().get(0).getOid()));
    Disjunction disjunction = Restrictions.disjunction();
    disjunction.add(createAttributeEq(parsedQuery.eqUidFilter,
            parsedQuery.eqUidFilter.getPath().lastNamed().getName()));
    disjunction.add(createAttributeEq(parsedQuery.eqNameFilter, SchemaConstantsGenerated.ICF_S_NAME));
    conjunction.add(disjunction);
    c1.add(conjunction);

    if (countingObjects) {
        c1.setProjection(Projections.countDistinct("s.oid"));
        return new RQueryCriteriaImpl(c1.getExecutableCriteria(session));
    }

    c1.setProjection(Projections.distinct(Projections.property("s.oid")));

    Criteria cMain = session.createCriteria(ClassMapper.getHQLTypeClass(ShadowType.class), "o");
    cMain.add(Subqueries.propertyIn("oid", c1));

    if (objectQuery != null && objectQuery.getPaging() != null) {
        cMain = updatePagingAndSorting(cMain, type, objectQuery.getPaging());
    }

    ProjectionList projections = Projections.projectionList();
    projections.add(Projections.property("fullObject"));
    projections.add(Projections.property("stringsCount"));
    projections.add(Projections.property("longsCount"));
    projections.add(Projections.property("datesCount"));
    projections.add(Projections.property("referencesCount"));
    projections.add(Projections.property("polysCount"));
    projections.add(Projections.property("booleansCount"));

    cMain.setProjection(projections);

    cMain.setResultTransformer(GetObjectResult.RESULT_TRANSFORMER);
    return new RQueryCriteriaImpl(cMain);
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void queryOrgTreeFindOrgs() throws Exception {
    Session session = open();/* w w w . ja v a 2 s  . co  m*/

    try {

        Criteria main = session.createCriteria(ROrg.class, "o");
        ProjectionList projections = Projections.projectionList();
        addFullObjectProjectionList("o", projections, false);
        main.setProjection(projections);

        DetachedCriteria detached = DetachedCriteria.forClass(RParentOrgRef.class, "p");
        detached.setProjection(Projections.distinct(Projections.property("p.ownerOid")));
        detached.add(Restrictions.eq("p.targetOid", "some oid"));

        main.add(Subqueries.propertyIn("o.oid", detached));
        main.addOrder(Order.asc("o.name.orig"));

        String expected = HibernateToSqlTranslator.toSql(main);

        OrgFilter orgFilter = OrgFilter.createOrg("some oid", OrgFilter.Scope.ONE_LEVEL);
        ObjectQuery objectQuery = ObjectQuery.createObjectQuery(orgFilter);
        objectQuery
                .setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, OrgType.class, objectQuery);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });

        OperationResult result = new OperationResult("query org structure");
        repositoryService.searchObjects(OrgType.class, objectQuery, null, result);

        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.evolveum.midpoint.repo.sql.QueryInterpreterTest.java

License:Apache License

@Test
public void test310QueryNameAndOrg() throws Exception {
    Session session = open();/*  w  w w .j  ava  2  s.  c  o m*/

    try {
        DetachedCriteria detached = DetachedCriteria.forClass(ROrgClosure.class, "cl");
        detached.setProjection(Projections.distinct(Projections.property("cl.descendantOid")));
        detached.add(Restrictions.eq("cl.ancestorOid", "1234"));
        detached.add(Restrictions.ne("cl.descendantOid", "1234"));

        Criteria main = session.createCriteria(RUser.class, "u");
        String mainAlias = "u";

        ProjectionList projections = Projections.projectionList();
        projections.add(Projections.property("fullObject"));

        projections.add(Projections.property("stringsCount"));
        projections.add(Projections.property("longsCount"));
        projections.add(Projections.property("datesCount"));
        projections.add(Projections.property("referencesCount"));
        projections.add(Projections.property("polysCount"));

        main.setProjection(projections);

        Conjunction c = Restrictions.conjunction();
        c.add(Restrictions.and(Restrictions.eq("u.name.orig", "cpt. Jack Sparrow"),
                Restrictions.eq("u.name.norm", "cpt jack sparrow")));
        c.add(Subqueries.propertyIn(mainAlias + ".oid", detached));
        main.add(c);

        main.addOrder(Order.asc("u.name.orig"));

        String expected = HibernateToSqlTranslator.toSql(main);

        EqualFilter eqFilter = EqualFilter.createEqual(ObjectType.F_NAME, ObjectType.class, prismContext, null,
                new PolyString("cpt. Jack Sparrow", "cpt jack sparrow"));

        OrgFilter orgFilter = OrgFilter.createOrg("12341234-1234-1234-1234-123412341234");

        ObjectQuery query = ObjectQuery.createObjectQuery(AndFilter.createAnd(eqFilter, orgFilter));
        query.setPaging(ObjectPaging.createPaging(null, null, ObjectType.F_NAME, OrderDirection.ASCENDING));

        String real = getInterpretedQuery(session, UserType.class, query);

        LOGGER.info("exp. query>\n{}\nreal query>\n{}", new Object[] { expected, real });
        AssertJUnit.assertEquals(expected, real);
    } finally {
        close(session);
    }
}

From source file:com.hmsinc.epicenter.model.workflow.impl.WorkflowRepositoryImpl.java

License:Open Source License

/**
 * Get the subquery for filtering based on events.
 * //from  ww  w.j  a  v a 2 s  .  c om
 * @param geometry
 * @return
 */
private DetachedCriteria getInvestigationGeometryFilter(final Geometry geometry) {

    final DetachedCriteria dc = DetachedCriteria.forClass(Event.class, "event");
    dc.createCriteria("event.investigations").add(Restrictions.eqProperty("id", "investigation.id"));
    dc.createCriteria("event.geography")
            .add(SpatialRestrictions.withinOrFilter("geometry", geometry, 1000, true));
    dc.setProjection(Projections.property("id"));

    //   dc.setComment(" */ /*+ ORDERED ");
    return dc;
}

From source file:com.inkubator.hrm.dao.impl.EmpDataDaoImpl.java

@Override
public List<EmpData> getAllDataNotExistInUserByParam(String param, int firstResult, int maxResults,
        Order order) {//from ww  w .  ja v a2 s. c o m
    DetachedCriteria subQuery = DetachedCriteria.forClass(HrmUser.class, "user")
            .setProjection(Projections.property("user.id"));
    subQuery.add(Property.forName("employee.id").eqProperty("user.empData.id"));

    Criteria criteria = getCurrentSession().createCriteria(getEntityClass(), "employee");
    criteria.add(Subqueries.notExists(subQuery));
    criteria = this.doSearchNotExistInUserByParam(param, criteria);

    criteria.setFirstResult(firstResult);
    criteria.setMaxResults(maxResults);
    criteria.addOrder(order);

    return criteria.list();
}

From source file:com.inkubator.hrm.dao.impl.EmpDataDaoImpl.java

@Override
public Long getTotalNotExistInUserByParam(String param) {
    DetachedCriteria subQuery = DetachedCriteria.forClass(HrmUser.class, "user")
            .setProjection(Projections.property("user.id"));
    subQuery.add(Property.forName("employee.id").eqProperty("user.empData.id"));

    Criteria criteria = getCurrentSession().createCriteria(getEntityClass(), "employee");
    criteria.add(Subqueries.notExists(subQuery));
    criteria = this.doSearchNotExistInUserByParam(param, criteria);

    return (Long) criteria.setProjection(Projections.rowCount()).uniqueResult();
}

From source file:com.isdemu.dao.impl.TBC_ClaseActivoDaoImpl.java

@Override
public List getAll() {
    // TODO Auto-generated method stub
    DetachedCriteria dc = DetachedCriteria.forClass(TbcClaseActivo.class, "clase");
    dc.createAlias("clase.tbcClasificacionActivo", "clasi");
    // System.out.println("criteria="+dc.getExecutableCriteria(sessionFactory.getCurrentSession()).list().get(0));
    // dc.addOrder(Order.asc("codigo_inventario"));
    return dc.getExecutableCriteria(sessionFactory.getCurrentSession()).list();
}

From source file:com.isdemu.dao.impl.TBC_ClaseActivoDaoImpl.java

@Override
public List getAllidClasi(Serializable id) {

    DetachedCriteria dc = DetachedCriteria.forClass(TbcClaseActivo.class, "clase");

    dc.createAlias("clase.tbcClasificacionActivo", "clasi");
    dc.add(Restrictions.eq("clasi.idClasificacionActivo", id));

    return dc.getExecutableCriteria(sessionFactory.getCurrentSession()).list();
}

From source file:com.isdemu.dao.impl.TBC_ClaseActivoDaoImpl.java

@Override
public List LastCodClase(Serializable id) {
    DetachedCriteria dc = DetachedCriteria.forClass(TbcClaseActivo.class, "clase");
    dc.createAlias("clase.tbcClasificacionActivo", "clasi");
    dc.add(Restrictions.eq("clasi.idClasificacionActivo", id));
    dc.addOrder(Order.desc("idClaseActivo"));

    return dc.getExecutableCriteria(sessionFactory.getCurrentSession()).list();
}

From source file:com.isdemu.dao.impl.TBC_ClasificacionActivoDaoImpl.java

@Override
public List getAllidClasi(Serializable id) {

    DetachedCriteria dc = DetachedCriteria.forClass(TbcClasificacionActivo.class, "clase");

    // dc.createAlias("clase.tbcClasificacionActivo", "clasi");
    //dc.add(Restrictions.eq("clasi.idClasificacionActivo", id));         

    return dc.getExecutableCriteria(sessionFactory.getCurrentSession()).list();
}