List of usage examples for org.hibernate.criterion CriteriaQuery getTypeUsingProjection
public Type getTypeUsingProjection(Criteria criteria, String propertyPath) throws HibernateException;
From source file:com.belle.yitiansystem.merchant.service.impl.MerchantsService.java
@Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName); Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName); StringBuffer fragment = new StringBuffer(); for (int i = 0; i < columns.length; i++) { SessionFactoryImplementor factory = criteriaQuery.getFactory(); boolean lower = ignoreCase && type.sqlTypes(factory)[i] == Types.VARCHAR; if (lower) { fragment.append(factory.getDialect().getLowercaseFunction()).append('('); }/* w w w . j ava 2 s. c om*/ fragment.append("CONVERT( " + columns[i] + " USING " + encoding + " )"); if (lower) fragment.append(')'); fragment.append(ascending ? " asc" : " desc"); if (i < columns.length - 1) fragment.append(", "); } return fragment.toString(); }
From source file:corner.orm.hibernate.expression.StringExpression.java
License:Apache License
/** * @see org.hibernate.criterion.Criterion#toSqlString(org.hibernate.Criteria, * org.hibernate.criterion.CriteriaQuery) *//*w w w . j a va 2 s . co m*/ public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName); Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName); StringBuffer fragment = new StringBuffer(); if (columns.length > 1) fragment.append('('); SessionFactoryImplementor factory = criteriaQuery.getFactory(); int[] sqlTypes = type.sqlTypes(factory); for (int i = 0; i < columns.length; i++) { boolean lower = ignoreCase && (sqlTypes[i] == Types.VARCHAR || sqlTypes[i] == Types.CHAR); //??1 if (exps.size() > 1) { fragment.append('('); } for (ExpPair p : exps) { fragment.append(" " + p.exp + " "); if (lower) { fragment.append(factory.getDialect().getLowercaseFunction()).append('('); } fragment.append(columns[i]); if (lower) fragment.append(')'); fragment.append(getOp()).append("?"); } if (exps.size() > 1) { fragment.append(')'); } if (i < columns.length - 1) fragment.append(" and "); } if (columns.length > 1) fragment.append(')'); return fragment.toString(); }
From source file:ispyb.server.common.util.ejb.CastDecimalOrder.java
License:Open Source License
/** * render the SQL fragment 'CAST(name AS DECIMAL)' */// w w w . j a v a 2 s . com @Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName); Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName); StringBuffer fragment = new StringBuffer(); fragment.append("CAST("); for (int i = 0; i < columns.length; i++) { SessionFactoryImplementor factory = criteriaQuery.getFactory(); boolean lower = ignoreCase && type.sqlTypes(factory)[i] == Types.VARCHAR; if (lower) { fragment.append(factory.getDialect().getLowercaseFunction()).append('('); } fragment.append(columns[i]); if (lower) fragment.append(')'); fragment.append(" AS DECIMAL)"); //fragment.append( ascending ? " asc" : " desc" ); if (i < columns.length - 1) fragment.append(", "); } return fragment.toString(); }
From source file:org.eulerframework.web.core.extend.hibernate5.InExpressionX.java
License:Apache License
@Override public TypedValue[] getTypedValues(Criteria criteria, CriteriaQuery criteriaQuery) { final ArrayList<TypedValue> list = new ArrayList<TypedValue>(); final Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName); if (type.isComponentType()) { final CompositeType compositeType = (CompositeType) type; final Type[] subTypes = compositeType.getSubtypes(); for (Object value : values) { for (int i = 0; i < subTypes.length; i++) { final Object subValue = value == null ? null : compositeType.getPropertyValues(value, EntityMode.POJO)[i]; list.add(new TypedValue(subTypes[i], subValue)); }// w w w . j a v a 2s .c om } } else { for (Object value : values) { list.add(new TypedValue(type, value)); } } return list.toArray(new TypedValue[list.size()]); }
From source file:org.jasig.ssp.util.hibernate.OrderAsString.java
License:Apache License
/** * Mainly a copy/paste of {@link Order#toSqlString(org.hibernate.Criteria, org.hibernate.criterion.CriteriaQuery)} * with column name rendering modified to wrap column names in a function * call. The super class impl was sufficiently monolothic that the only * alternative was to implement a find-and-replace on column names in its * output. But the Hibernate code should be stable enough that a copy/paste * is much less risky than an impl that might accidentally replace * substrings instead of entire column names. * * @param criteria/*from w w w .ja v a2s.c om*/ * @param criteriaQuery * @return * @throws HibernateException */ @Override public String toSqlString(Criteria criteria, CriteriaQuery criteriaQuery) throws HibernateException { String[] columns = criteriaQuery.getColumnsUsingProjection(criteria, propertyName); Type type = criteriaQuery.getTypeUsingProjection(criteria, propertyName); StringBuffer fragment = new StringBuffer(); for (int i = 0; i < columns.length; i++) { SessionFactoryImplementor factory = criteriaQuery.getFactory(); boolean lower = ignoreCase && type.sqlTypes(factory)[i] == Types.VARCHAR; if (lower) { fragment.append(factory.getDialect().getLowercaseFunction()).append('('); } // org.hibernate.criterion.Order.toSqlString has this: //fragment.append( columns[i] ); // which we replace with: fragment.append(castToSqlString(columns[i], type, criteriaQuery)); if (lower) fragment.append(')'); fragment.append(ascending ? " asc" : " desc"); if (i < columns.length - 1) fragment.append(", "); } return fragment.toString(); }