Example usage for org.hibernate.criterion Restrictions ne

List of usage examples for org.hibernate.criterion Restrictions ne

Introduction

In this page you can find the example usage for org.hibernate.criterion Restrictions ne.

Prototype

public static SimpleExpression ne(String propertyName, Object value) 

Source Link

Document

Apply a "not equal" constraint to the named property

Usage

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

License:Apache License

@Test
public void test310QueryNameAndOrg() throws Exception {
    Session session = open();//from  w  w w  . j  a va 2s .  co  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.example.barista.db.IngredientDAO.java

License:Apache License

/**
 * Unique exclusive name check.//from w w w . j  a  va2 s  .co m
 * @param ingredient
 *            the ingredient
 * @return true if name is unique, false otherwise
 */
public boolean isNameExclusivelyUnique(Ingredient ingredient) {
    return 0 == (long) criteria().add(Restrictions.eq("name", ingredient.getName()))
            .add(Restrictions.ne("id", ingredient.getId())).setProjection(Projections.rowCount())
            .uniqueResult();
}

From source file:com.floreantpos.model.dao.TableBookingInfoDAO.java

License:Open Source License

public Collection<ShopTable> getBookedTables(Date startDate, Date endDate) {

    Session session = null;//from  w  w w  .ja  v  a 2 s .  com
    try {
        session = createNewSession();
        Criteria criteria = session.createCriteria(getReferenceClass());
        //   criteria.add(Restrictions.ge(TableBookingInfo.PROP_TO_DATE, startDate));

        criteria.add(Restrictions.ge(TableBookingInfo.PROP_TO_DATE, startDate))
                .add(Restrictions.ne(TableBookingInfo.PROP_STATUS, TableBookingInfo.STATUS_CANCEL))
                .add(Restrictions.ne(TableBookingInfo.PROP_STATUS, TableBookingInfo.STATUS_NO_APR))
                .add(Restrictions.ne(TableBookingInfo.PROP_STATUS, TableBookingInfo.STATUS_CLOSE));

        List<TableBookingInfo> list = criteria.list();
        List<TableBookingInfo> bookings = new ArrayList<TableBookingInfo>();

        for (TableBookingInfo tableBookingInfo : list) {
            if (DateUtil.between(tableBookingInfo.getFromDate(), tableBookingInfo.getToDate(), startDate)
                    || DateUtil.between(tableBookingInfo.getFromDate(), tableBookingInfo.getToDate(),
                            endDate)) {
                bookings.add(tableBookingInfo);
            }
        }

        Set<ShopTable> bookedTables = new HashSet<ShopTable>();
        for (TableBookingInfo tableBookingInfo : bookings) {
            List<ShopTable> tables = tableBookingInfo.getTables();
            if (tables != null) {
                bookedTables.addAll(tables);
            }
        }

        return bookedTables;
    } catch (Exception e) {
        PosLog.error(getClass(), e);
    } finally {
        if (session != null) {
            closeSession(session);
        }
    }
    return null;
}

From source file:com.floreantpos.model.dao.TableBookingInfoDAO.java

License:Open Source License

public List<TableBookingInfo> getAllOpenBooking() {
    Session session = null;// w ww .ja  v a  2  s .c o  m
    try {
        session = createNewSession();

        Criteria criteria = session.createCriteria(getReferenceClass());
        criteria.add(Restrictions.ne(TableBookingInfo.PROP_STATUS, TableBookingInfo.STATUS_CLOSE));
        List list = criteria.list();
        return list;
    } catch (Exception e) {
        PosLog.error(getClass(), e);
    } finally {
        try {
            session.close();
        } catch (Exception e2) {
        }
    }
    return null;

}

From source file:com.floreantpos.model.dao.TableBookingInfoDAO.java

License:Open Source License

public List getAllBookingByDate(Date startDate, Date endDate) {

    Session session = null;//  w ww. ja  v  a 2  s .  com
    try {
        session = createNewSession();
        Criteria criteria = session.createCriteria(TableBookingInfo.class);

        criteria.add(Restrictions.ge(TableBookingInfo.PROP_FROM_DATE, startDate))
                .add(Restrictions.le(TableBookingInfo.PROP_FROM_DATE, endDate))
                .add(Restrictions.ne(TableBookingInfo.PROP_STATUS, TableBookingInfo.STATUS_CLOSE));

        List list = criteria.list();

        return list;
    } catch (Exception e) {
        PosLog.error(getClass(), e);
    } finally {
        session.close();
    }
    return null;
}

From source file:com.gisgraphy.domain.repository.OpenStreetMapDao.java

License:Open Source License

@SuppressWarnings({ "unchecked", "rawtypes" })
public OpenStreetMap getNearestFrom(final Point point, final boolean onlyroad, final boolean filterEmptyName) {
    if (point == null) {
        return null;
    }/*ww  w.  j a  v  a 2  s  .  c o  m*/
    return (OpenStreetMap) this.getHibernateTemplate().execute(new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria criteria = session.createCriteria(OpenStreetMap.class);

            if (point != null) {
                //An intersect restriction will probably have better performances and use the index than a distance restriction 
                Polygon polygonBox = GeolocHelper.createPolygonBox(point.getX(), point.getY(),
                        DEFAULT_DISTANCE);
                criteria = criteria.add(new IntersectsRestriction(OpenStreetMap.SHAPE_COLUMN_NAME, polygonBox));
            }
            if (onlyroad) {
                criteria = criteria.add(Restrictions.ne("streetType", StreetType.FOOTWAY));
            }
            if (filterEmptyName) {
                criteria = criteria.add(Restrictions.isNotNull("name"));
            }

            String pointAsString = "ST_GeometryFromText('POINT(" + point.getX() + " " + point.getY() + ")',"
                    + SRID.WGS84_SRID.getSRID() + ")";
            String distanceCondition = new StringBuffer().append(DISTANCE_SPHERE_FUNCTION).append("(")
                    .append(pointAsString).append(",").append(SpatialProjection.ST_CLOSEST_POINT).append("(")
                    .append("this_.").append(OpenStreetMap.SHAPE_COLUMN_NAME).append(",").append(pointAsString)
                    .append(")").append(")").toString();
            criteria.addOrder(new NativeSQLOrder(distanceCondition));
            criteria = criteria.setMaxResults(1);
            criteria.setCacheable(true);
            // List<Object[]> queryResults =testCriteria.list();
            OpenStreetMap openStreetMap = (OpenStreetMap) criteria.uniqueResult();

            return openStreetMap;

        }
    });
}

From source file:com.gisgraphy.hibernate.criterion.DistanceRestrictionTest.java

License:Open Source License

@SuppressWarnings("unchecked")
@Test//from   www  .j a v  a  2  s .c  om
public void testDistanceRestrictionPointDouble() {
    final City p1 = GisgraphyTestHelper.createCity("paris", 48.86667F, 2.3333F, 1L);
    City p2 = GisgraphyTestHelper.createCity("bordeaux", 44.83333F, -0.56667F, 3L);

    this.cityDao.save(p1);
    this.cityDao.save(p2);

    HibernateCallback hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            List<String> fieldList = new ArrayList<String>();
            fieldList.add("name");
            Projection projection = Projections.property("name").as("name");
            testCriteria.setProjection(projection).add(Restrictions.ne("id", p1.getId()))
                    .add(new DistanceRestriction(p1.getLocation(), 500000D))
                    .setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    List<_CityDTO> cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals("According to the distance restriction, it should have zero result", 0, cities.size());

    hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            Projection projection = Projections.property("name").as("name");
            testCriteria.setProjection(projection).add(new DistanceRestriction(p1.getLocation(), 600000D))
                    .add(Restrictions.ne("id", p1.getId()))
                    .setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals("According to the distance restriction, it should have one results", 1, cities.size());
    assertEquals("bordeaux", cities.get(0).getName());

}

From source file:com.gisgraphy.hibernate.projection.SpatialProjectionTest.java

License:Open Source License

@SuppressWarnings("unchecked")
@Test//from  w w w  .ja va  2  s. co m
@Ignore
public void testDistance_sphere() {
    final City p1 = GisgraphyTestHelper.createCity("paris", 48.86667F, 2.3333F, 1L);
    City p2 = GisgraphyTestHelper.createCity("bordeaux", 44.83333F, -0.56667F, 3L);

    this.cityDao.save(p1);
    this.cityDao.save(p2);

    HibernateCallback hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            ProjectionList projection = Projections.projectionList()
                    .add(Projections.property("name").as("name")).add(SpatialProjection
                            .distance_sphere(p1.getLocation(), GisFeature.LOCATION_COLUMN_NAME).as("distance"));
            // remove the from point
            testCriteria.add(Restrictions.ne("id", p1.getId())).setProjection(projection);
            testCriteria.setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    List<_CityDTO> cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals(1, cities.size());
    assertEquals("bordeaux", cities.get(0).getName());
    Double calculatedDist = p1.distanceTo(p2.getLocation());
    Double retrieveDistance = cities.get(0).getDistance();
    double percent = (Math.abs(calculatedDist - retrieveDistance) * 100)
            / Math.min(retrieveDistance, calculatedDist);
    assertTrue("There is more than one percent of error beetween the calculated distance (" + calculatedDist
            + ") and the retrieved one (" + retrieveDistance + ")", percent < 1);

}

From source file:com.gisgraphy.hibernate.projection.SpatialProjectionTest.java

License:Open Source License

@SuppressWarnings("unchecked")
@Test/*from ww  w.j a  v a2  s  . c o m*/
@Ignore
public void testDistance() {
    float x1 = -2f;
    float y1 = 2f;
    float x2 = 2f;
    float y2 = 2f;
    Point locationParis = GeolocHelper.createPoint(x1, y1);
    //locationParis.setSRID(-1);
    Point locationbordeaux = GeolocHelper.createPoint(x2, y2);
    //locationbordeaux.setSRID(-1);

    final City p1 = GisgraphyTestHelper.createCity("paris", 0F, 0F, 1L);
    p1.setLocation(locationParis);
    City p2 = GisgraphyTestHelper.createCity("bordeaux", 0F, 0F, 3L);
    p2.setLocation(locationbordeaux);

    this.cityDao.save(p1);
    this.cityDao.save(p2);

    HibernateCallback hibernateCallback = new HibernateCallback() {

        public Object doInHibernate(Session session) throws PersistenceException {

            Criteria testCriteria = session.createCriteria(City.class);
            ProjectionList projection = Projections.projectionList()
                    .add(Projections.property("name").as("name")).add(SpatialProjection
                            .distance(p1.getLocation(), GisFeature.LOCATION_COLUMN_NAME).as("distance"));
            // remove the from point
            testCriteria.add(Restrictions.ne("id", p1.getId())).setProjection(projection);
            testCriteria.setResultTransformer(Transformers.aliasToBean(_CityDTO.class));

            List<_CityDTO> results = testCriteria.list();
            return results;
        }
    };

    List<_CityDTO> cities = (List<_CityDTO>) testDao.testCallback(hibernateCallback);
    assertEquals(1, cities.size());
    assertEquals("bordeaux", cities.get(0).getName());
    Double calculatedDist = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));//cartesian distance
    Double retrieveDistance = cities.get(0).getDistance();
    double percent = (Math.abs(calculatedDist - retrieveDistance) * 100)
            / Math.min(retrieveDistance, calculatedDist);
    assertTrue("There is more than one percent of error beetween the calculated distance (" + calculatedDist
            + ") and the retrieved one (" + retrieveDistance + ")", percent < 1);
}

From source file:com.glaf.base.utils.HibernateUtil.java

License:Apache License

/**
 * // w  w w  . ja v  a2 s.c  o  m
 * @param map
 * @param forClass
 * @return
 */
public static DetachedCriteria getCriteria(Map<String, String> map, Class<?> forClass) {
    DetachedCriteria detachedCriteria = DetachedCriteria.forClass(forClass);
    Set<String> params = map.keySet();
    // boolean createAliased = false;
    if (params != null) {
        Map<String, String> aliasMap = new java.util.HashMap<String, String>();// ??
        int aliasNum = 0;// ???
        Iterator<String> it = params.iterator();
        while (it.hasNext()) {
            String key = (String) it.next();
            String value = map.get(key) == null ? null : map.get(key).toString();
            value = value == null ? value : value.trim();
            if (key.startsWith(QUERY_PREFIX) && value != null && value.trim().length() > 0) {
                // ??
                String name = key.substring(QUERY_PREFIX.length());
                // ?? "="
                String op = "eq";
                if (name.indexOf("_") != -1) {
                    int pos = name.lastIndexOf("_");
                    op = name.substring(pos + 1);
                    name = name.substring(0, pos);
                }

                if ("me".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=" + value));

                } else if ("zns".equals(op)) { // 
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(" 1 = 2 "));

                } else if ("mn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is NULL "));

                } else if ("mnn".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(maintAlias + "_." + name + " is not NULL "));

                } else if ("md".equals(op)) { //  ?????
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(Restrictions.sqlRestriction(maintAlias + "_." + name + "=?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));

                } else if ("mis".equals(op)) { // in( ?_select )
                    String maintAlias = detachedCriteria.getAlias();
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                } else if ("xd".equals(op)) { //  . date
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=? ",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if ("xs".equals(op)) { //  . String
                    // ? string 
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "='" + value + "' "));
                } else if ("xe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) > 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("ixe".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) >= 0) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xel".equals(op)) { //  .  
                    if (!value.equals("") && Long.parseLong(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "=" + value));
                    }
                } else if ("xne".equals(op)) { //  .  
                    if (!value.equals("") && Integer.parseInt(value) != -1) {
                        int pos = name.lastIndexOf(".");
                        String alias = name.substring(0, pos);
                        name = name.substring(pos + 1);
                        if (aliasMap.get(alias) == null) {
                            detachedCriteria.createAlias(alias, alias);
                            aliasNum++;
                            aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                        }
                        detachedCriteria
                                .add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + "<>" + value));
                    }
                } else if ("xi".equals(op)) { //  . in () String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    // ? string 
                    detachedCriteria.add(
                            Restrictions.sqlRestriction(aliasMap.get(alias) + name + " in (" + value + ") "));
                } else if ("xl".equals(op)) { //  like . String
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions
                            .sqlRestriction(aliasMap.get(alias) + name + " like '%" + value + "%'"));
                } else if (op.startsWith("xdate")) { // Date
                    String dateOp = "=";
                    if ("xdatelt".equals(op)) {
                        dateOp = "<";
                    } else if ("xdategt".equals(op)) {
                        dateOp = ">";
                    } else if ("xdatele".equals(op)) {
                        dateOp = "<=";
                    } else if ("xdatege".equals(op)) {
                        dateOp = ">=";
                    }
                    int pos = name.lastIndexOf(".");
                    String alias = name.substring(0, pos);
                    name = name.substring(pos + 1);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(aliasMap.get(alias) + name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } else if (op.startsWith("date")) { // Date
                    String dateOp = "=";
                    if ("datelt".equals(op)) {
                        dateOp = "<";
                    } else if ("dategt".equals(op)) {
                        dateOp = ">";
                    } else if ("datele".equals(op)) {
                        dateOp = "<=";
                    } else if ("datege".equals(op)) {
                        dateOp = ">=";
                    }
                    detachedCriteria.add(Restrictions.sqlRestriction(name + dateOp + "?",
                            DateUtils.toDate(value), StandardBasicTypes.DATE));
                } /*
                  * else if(op.equals("double")){ //Double String doubleOp
                  * = "="; if("double".equals(op)){ } }
                  */else if ("like".equals(op)) { // like
                    detachedCriteria.add(Restrictions.like(name, "%" + value + "%"));
                } else if ("es".equals(op)) {
                    // if(Integer.parseInt(value) != -1){
                    detachedCriteria
                            .add(Restrictions.sqlRestriction(name + " = ? ", value, StandardBasicTypes.STRING));
                    // }
                } else if ("ex".equals(op)) { // =int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Integer(value)));
                    }
                } else if ("el".equals(op)) { // =long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Long(value)));
                    }
                } else if ("ed".equals(op)) { // =double
                    if (Double.parseDouble(value) != -1) {
                        detachedCriteria.add(Restrictions.eq(name, new Double(value)));
                    }
                } else if ("nei".equals(op)) { // <>int
                    if (Integer.parseInt(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Integer(value)));
                    }
                } else if ("nel".equals(op)) { // <>long
                    if (Long.parseLong(value) != -1) {
                        detachedCriteria.add(Restrictions.ne(name, new Long(value)));
                    }
                } else if ("in".equals(op)) { // in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(
                                Restrictions.sqlRestriction(maintAlias + "_." + name + " in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " in (" + value
                        // + ") "));
                    }
                } else if ("nin".equals(op)) { // not in ()
                    if (!"".trim().equals(value)) {
                        String maintAlias = detachedCriteria.getAlias();
                        detachedCriteria.add(Restrictions
                                .sqlRestriction(maintAlias + "_." + name + " not in (" + value + ") "));
                        // detachedCriteria.add(Restrictions
                        // .sqlRestriction(name + " not in (" + value
                        // + ") "));
                    }
                } else {
                    detachedCriteria.add(Restrictions.eq(name, value));
                }
            } else if (key.startsWith(ORDER_PREFIX)) {
                // ????? //order__asc(desc) ? hidden 
                String name = key.substring(ORDER_PREFIX.length());

                int pos = name.lastIndexOf(".");
                if (pos != -1) {
                    String alias = name.substring(0, pos);
                    if (aliasMap.get(alias) == null) {
                        detachedCriteria.createAlias(alias, alias);
                        aliasNum++;
                        aliasMap.put(alias, getNewAliasName(alias, aliasNum));
                    }
                }

                if (value.trim().equalsIgnoreCase("asc")) {
                    detachedCriteria.addOrder(Order.asc(name));
                } else {
                    detachedCriteria.addOrder(Order.desc(name));
                }
            }
        }
        map.putAll(aliasMap);
    }

    return detachedCriteria;
}