@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { StringBuilder buffer = new StringBuilder(); buffer.append('('); int i = 0; for( Criterion crit : criterion ) { if( i != 0 ) { buffer.append(' '); buffer.append(op); buffer.append(' '); } buffer.append(crit.toSqlString(criteria, criteriaQuery)); i++; } buffer.append(')'); return buffer.toString(); }
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { Dialect dialect = criteriaQuery.getFactory().getDialect(); String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName); if (columns.length != 1) { throw new HibernateException("rlike may only be used with single-column properties"); } if (dialect instanceof MySQLDialect) { return columns[0] + " rlike ?"; } if (isOracleDialect(dialect)) { return " REGEXP_LIKE (" + columns[0] + ", ?)"; } if (dialect instanceof PostgreSQL81Dialect) { return columns[0] + " ~* ?"; } if (dialect instanceof H2Dialect) { return columns[0] + " REGEXP ?"; } throw new HibernateException("rlike is not supported with the configured dialect " + dialect.getClass().getCanonicalName()); }
public String toSqlString( Criteria c, CriteriaQuery q ) { String initial_hql = query.getQueryString(); // default query selects whole GlycanSequence objects, which // aren't needed if the Criterion we're returning is just // going to be used in a subselect. int i = initial_hql.indexOf("from "); assert i != -1 : initial_hql; // so, narrow the select clause: // String hql = "select gs.id " + initial_hql.substring( i ); String hql = "select gs.glycan_sequence_id " + initial_hql.substring( i ); // translate to SQL String subquery_expr_sql = hql; //translateHql2Sql( hql ); String sql = propertyName + " in (" + subquery_expr_sql + ")"; return sql; }
@Test public void testProjectionOrderShouldTakeAscOrderIntoAccount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); String[] projectionAlias = { "colProjalias" }; EasyMock.expect( criteriaQuery.getColumnsUsingProjection((Criteria) EasyMock .anyObject(), EasyMock.eq(alias))).andReturn( projectionAlias).once(); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("this_alias").once(); EasyMock.replay(criteriaQuery); ProjectionOrder dorder = new ProjectionOrder(alias, true); String sqlString = dorder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("asc")); EasyMock.verify(criteriaQuery); }
@Test public void testProjectionOrderShouldHaveAscOrderByDefault() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); String[] projectionAlias = { "colProjalias" }; EasyMock.expect( criteriaQuery.getColumnsUsingProjection((Criteria) EasyMock .anyObject(), EasyMock.eq(alias))).andReturn( projectionAlias).once(); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("this_alias").once(); EasyMock.replay(criteriaQuery); ProjectionOrder dorder = new ProjectionOrder(alias); String sqlString = dorder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("asc")); EasyMock.verify(criteriaQuery); }
@Test public void testProjectionOrderShouldTakeDescOrderIntoAccount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); String[] projectionAlias = { "colProjalias" }; EasyMock.expect( criteriaQuery.getColumnsUsingProjection((Criteria) EasyMock .anyObject(), EasyMock.eq(alias))).andReturn( projectionAlias).once(); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("this_alias").once(); EasyMock.replay(criteriaQuery); ProjectionOrder dorder = new ProjectionOrder(alias, false); String sqlString = dorder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("desc")); EasyMock.verify(criteriaQuery); }
@Test public void testDistanceRestrictionPointDoubleBooleanShouldUseIndexIfUseIndexTrue() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getColumn((Criteria) EasyMock.anyObject(), EasyMock.eq(GisFeature.LOCATION_COLUMN_NAME))) .andReturn("").once(); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("").once(); EasyMock.replay(criteriaQuery); DistanceRestriction dr = new DistanceRestriction(GisgraphyTestHelper .createPoint(3F, 4F), 4D, true); String sqlString = dr.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains(" && ")); EasyMock.verify(criteriaQuery); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) { String[] columns = criteriaQuery.findColumns(getPropiedad(), criteria); if (columns.length != 1) { throw new HibernateException( "NumberLike may only be used with single-column properties"); } SessionFactoryImplementor factory = criteriaQuery.getFactory(); if (factory.getDialect() instanceof H2Dialect) { return "cast(cast(" + columns[0] + " as int) as VARCHAR) " + "like ?"; } else { // XXX ver consistencia entre bases de datos return columns[0] + "::text like ?"; } }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) { String[] columns = criteriaQuery.findColumns(getPath(), criteria); if (columns.length != 1) { throw new HibernateException( "Regex may only be used with single-column properties"); } SessionFactoryImplementor factory = criteriaQuery.getFactory(); if (factory.getDialect() instanceof H2Dialect) { return columns[0] + " regexp ?"; } else { // XXX ver consistencia entre bases de datos return columns[0] + " ~ ?"; } }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { final String[] lhsColumns = criteriaQuery.findColumns( propertyName, criteria ); final String[] rhsColumns = criteriaQuery.findColumns( otherPropertyName, criteria ); List<String> comparisons = new ArrayList<String>(); for (int i = 0; i<lhsColumns.length; i++) { String comp = formatExpr(lhsColumns[0], rhsColumns[0], mode); comparisons.add(comp); } if ( comparisons.size() > 1 ) { return '(' + StringHelper.join( " and ", comparisons.toArray(new String[comparisons.size()]) ) + ')'; } else { return comparisons.get(0); } }
/** * Private helper method to construct component ids with an optional alias. * * @param sb * a {@link StringBuffer} * @param componentType * the {@link ComponentType} * @param criteriaQuery * the {@link CriteriaQuery} * @param criteria * the {@link Criteria} * @param position * the position of the alias, appened if >= 0 */ private void appendComponentIds(final StringBuffer sb, final ComponentType componentType, final CriteriaQuery criteriaQuery, final Criteria criteria, final Integer position) { final String[] idProperties = componentType.getPropertyNames(); int currPos = position != null ? position.intValue() : -1; for (int i = 0; i < idProperties.length; i++) { sb.append(criteriaQuery.getColumn(criteria, groupByProperty + "." + idProperties[i])); if (currPos >= 0) { sb.append(" as y").append(currPos).append('_'); currPos++; } if (i + 1 < idProperties.length) { sb.append(", "); } } }
@Override public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { List<TypedValue> values = new ArrayList<TypedValue>(); for( Criterion crit : criterion ) { values.addAll(Arrays.asList(crit.getTypedValues(criteria, criteriaQuery))); } return values.toArray(new TypedValue[values.size()]); }
public CriteriaQueryTranslator( final SessionFactoryImplementor factory, final CriteriaImpl criteria, final String rootEntityName, final String rootSQLAlias, CriteriaQuery outerQuery) throws HibernateException { this( factory, criteria, rootEntityName, rootSQLAlias ); outerQueryTranslator = outerQuery; }
public CustomCriteriaQueryTranslator( final SessionFactoryImplementor factory, final CustomCriteriaImpl criteria, final String rootEntityName, final String rootSQLAlias, CriteriaQuery outerQuery) throws HibernateException { this( factory, criteria, rootEntityName, rootSQLAlias ); outerQueryTranslator = outerQuery; }
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String columnName = criteriaQuery.getColumn(criteria, GisFeature.LOCATION_COLUMN_NAME); StringBuffer result = new StringBuffer("( st_distance_sphere(").append( columnName).append(", ?) <=").append(this.distance).append(")"); return useIndex ? result.append(" AND ").append( GisHelper.getBoundingBox(criteriaQuery.getSQLAlias(criteria), this.point .getY(), this.point.getX(), distance)).toString() : result.toString(); }
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String columnName = criteriaQuery.getColumn(criteria, this.columnName); StringBuffer result = new StringBuffer(columnName).append( " && ").append(" ? "); return result.toString(); }
public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String columnName = criteriaQuery.getColumn(criteria, ts_vectorColumnName); StringBuffer result = new StringBuffer("(").append(columnName).append( " @@ plainto_tsquery('simple',?)").append(")"); return result.toString(); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { Order nso = new NativeSQLOrder(criteriaQuery.getColumnsUsingProjection( criteria, aliasName)[0], this.ascending); return nso.toSqlString(criteria, criteriaQuery); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { StringBuilder fragment = new StringBuilder(); fragment.append("("); fragment.append(sql); fragment.append(")"); fragment.append(ascending ? " asc" : " desc"); return StringHelper.replace(fragment.toString(), "{alias}", criteriaQuery.getSQLAlias(criteria)); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { StringBuilder fragment = new StringBuilder(); fragment.append(" st_distance_sphere("); fragment.append(criteriaQuery.getSQLAlias(criteria)); fragment.append(".location, st_geometryfromtext('"); fragment.append(point.toText()); fragment.append("',"); fragment.append(SRID.WGS84_SRID.getSRID()); fragment.append(ascending ? ")) asc" : ")) desc"); return fragment.toString(); }
@Test public void distanceOrderPointBooleanShouldTakeAscOrderIntoAccount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("alias ").once(); EasyMock.replay(criteriaQuery); DistanceOrder distanceOrder = new DistanceOrder(GisgraphyTestHelper.createPoint( 3F, 4F), true); String sqlString = distanceOrder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("asc")); assertTrue(sqlString.contains("st_distance_sphere")); EasyMock.verify(criteriaQuery); }
@Test public void distanceOrderShouldHaveAscOrderByDefault() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("alias ").once(); EasyMock.replay(criteriaQuery); DistanceOrder dorder = new DistanceOrder(GisgraphyTestHelper.createPoint( 3F, 4F)); String sqlString = dorder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("asc")); assertTrue(sqlString.contains("st_distance_sphere")); EasyMock.verify(criteriaQuery); }
@Test public void distanceOrderPointBooleanShouldTakeDescOrderIntoAccount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn(" alias ").once(); EasyMock.replay(criteriaQuery); DistanceOrder dorder = new DistanceOrder(GisgraphyTestHelper.createPoint( 3F, 4F), false); String sqlString = dorder.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("desc")); assertTrue(sqlString.contains("st_distance_sphere")); EasyMock.verify(criteriaQuery); }
@Test public void testDistanceRestrictionPointDoubleBooleanShouldNotUseIndexIfUseIndexFalse() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getColumn((Criteria) EasyMock.anyObject(), EasyMock.eq(GisFeature.LOCATION_COLUMN_NAME))) .andReturn(" test ").once(); EasyMock.replay(criteriaQuery); DistanceRestriction dr = new DistanceRestriction(GisgraphyTestHelper .createPoint(3F, 4F), 4D, false); String sqlString = dr.toSqlString(null, criteriaQuery); assertTrue(!sqlString.contains(" && ")); EasyMock.verify(criteriaQuery); }
@Test public void testToSqlStringCriteriaCriteriaQueryShouldReplaceAlias() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("sqlname").once(); EasyMock.replay(criteriaQuery); NativeSQLOrder nso = new NativeSQLOrder("{alias}.name", true); String sqlString = nso.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("sqlname.name")); EasyMock.verify(criteriaQuery); }
@Test public void testToSqlStringCriteriaCriteriaQueryShouldTakeTheAscOrderIntoAcount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("sqlname").once(); EasyMock.replay(criteriaQuery); NativeSQLOrder nso = new NativeSQLOrder("{alias}.name", true); String sqlString = nso.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("asc")); EasyMock.verify(criteriaQuery); }
@Test public void testToSqlStringCriteriaCriteriaQueryShouldTakeTheDescOrderIntoAcount() { CriteriaQuery criteriaQuery = EasyMock.createMock(CriteriaQuery.class); EasyMock.expect( criteriaQuery.getSQLAlias((Criteria) EasyMock.anyObject())) .andReturn("sqlname").once(); EasyMock.replay(criteriaQuery); NativeSQLOrder nso = new NativeSQLOrder("{alias}.name", false); String sqlString = nso.toSqlString(null, criteriaQuery); assertTrue(sqlString.contains("desc")); EasyMock.verify(criteriaQuery); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String column = criteriaQuery.getColumnsUsingProjection(criteria, propertyName)[0]; return " case " + // pending first " when " + column + " = " + JobStatus.PENDING.ordinal() + " then 0 " + // running, stalled, paused then " when " + column + " = " + JobStatus.RUNNING.ordinal() + " then 1 " + " when " + column + " = " + JobStatus.STALLED.ordinal() + " then 1 " + " when " + column + " = " + JobStatus.PAUSED.ordinal() + " then 1 " + // and the rest (killed, finished, etc) " else 2 end " + (ascending ? " asc" : " desc"); }
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String[] columns = criteriaQuery.findColumns(propertyName, criteria); if (columns.length != 1) { throw new HibernateException("FulltextSearch may only be used with single-column properties"); } String searchModeStr = null; switch (this.searchMode) { case BOOLEAN: searchModeStr = "BOOLEAN"; break; case NATURAL_LANGUAGE: searchModeStr = "NATURAL_LANGUAGE"; break; default: throw new HibernateException("Null SearchMode set"); } String columnsStr = columns[0]; for (int i = 1; i < columns.length; i++) { columnsStr += ", " + columns[i]; } return "match (" + columnsStr + ") against (? IN " + searchModeStr + " MODE)"; }
/** * {@inheritDoc} */ @Override public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) { TypedValue tv = new TypedValue(new org.hibernate.type.StringType(), matchMode.toString(valor), EntityMode.POJO); return new TypedValue[] { tv }; }
/** * {@inheritDoc} */ @Override public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) { TypedValue tv = new TypedValue(new org.hibernate.type.StringType(), value, EntityMode.POJO); return new TypedValue[] { tv }; }
@Override public String toSqlString(final Criteria criteria, final int position, final CriteriaQuery criteriaQuery) throws HibernateException { final Type identifierType = criteriaQuery.getIdentifierType(criteria); if (identifierType.isComponentType()) { final StringBuffer sb = new StringBuffer(); appendComponentIds(sb, (ComponentType) identifierType, criteriaQuery, criteria, new Integer(position)); return sb.toString(); } return super.toSqlString(criteria, position, criteriaQuery); }
@Override public String toGroupSqlString(final Criteria criteria, final CriteriaQuery criteriaQuery) throws HibernateException { final StringBuffer sb = new StringBuffer(50); final Type identifierType = criteriaQuery.getIdentifierType(criteria); if (identifierType.isComponentType()) { appendComponentIds(sb, (ComponentType) identifierType, criteriaQuery, criteria, null); } else { sb.append(criteriaQuery.getColumn(criteria, groupByProperty)); } // Append HAVING clause sb.append(" having "); sb.append("("); // Remove the alias final String proj = projection.toSqlString(criteria, 0xCAFEBABE, criteriaQuery); sb.append(proj.substring(0, proj.indexOf("as")).trim()); sb.append(")"); sb.append(SPACE_STRING) .append(op.getSqloperator()) .append(SPACE_STRING) .append(value); return sb.toString(); }
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return new TypedValue[] { criteriaQuery.getTypedValue(criteria, propertyName, value.toString()) }; }
/** Irrelevant; not used. */ public TypedValue[] getTypedValues( Criteria c, CriteriaQuery q ) { return new TypedValue[0]; }
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return new TypedValue[] { criteriaQuery.getTypedValue(criteria, GisFeature.LOCATION_COLUMN_NAME, point) }; }
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return new TypedValue[] { criteriaQuery.getTypedValue(criteria, GisFeature.LOCATION_COLUMN_NAME, polygon) }; }
public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { return new TypedValue[] { new TypedValue( Hibernate.STRING, StringHelper.normalize(searchedText), EntityMode.POJO )}; }