List of usage examples for org.hibernate.type Type sqlTypes
int[] sqlTypes(Mapping mapping) throws MappingException;
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('('); }/*from ww w.j a v a 2 s . c o m*/ 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:com.blazebit.persistence.integration.hibernate.base.HibernateJpaProvider.java
License:Apache License
private String[] getColumnTypeForPropertyType(EntityType<?> entityType, String attributeName, SessionFactoryImplementor sfi, Type propertyType) { if (propertyType instanceof org.hibernate.type.EntityType) { propertyType = ((org.hibernate.type.EntityType) propertyType).getIdentifierOrUniqueKeyType(sfi); }/*from w w w . j a v a2s .c o m*/ long length = Column.DEFAULT_LENGTH; int precision = Column.DEFAULT_PRECISION; int scale = Column.DEFAULT_SCALE; try { Method m = Type.class.getMethod("dictatedSizes", Mapping.class); Object size = ((Object[]) m.invoke(propertyType, sfi))[0]; length = (long) size.getClass().getMethod("getLength").invoke(size); precision = (int) size.getClass().getMethod("getPrecision").invoke(size); scale = (int) size.getClass().getMethod("getScale").invoke(size); } catch (Exception ex) { LOG.fine("Could not determine the column type of the attribute: " + attributeName + " of the entity: " + entityType.getName()); } return new String[] { sfi.getDialect().getTypeName(propertyType.sqlTypes(sfi)[0], length, precision, scale) }; }
From source file:com.siemens.scr.avt.ad.query.common.HibernateLoadingStrategy.java
License:Open Source License
protected int sqlTypes(Type type) { return type.sqlTypes(getMapping())[0]; }
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) *///from w w w .ja v a 2s .c om 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 ww . j av a2 s .c o m*/ @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.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. j a va 2 s . co m * @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(); }
From source file:org.seasar.hibernate.jpa.metadata.AbstractHibernateAttributeDesc.java
License:Apache License
/** * Hibernate???{@link Types SQL}????//w ww.j av a 2 s.co m * * @param hibernateType * Hibernate? * @return SQL? */ protected int getSqlType(final Type hibernateType) { try { final int[] sqlTypes = hibernateType.sqlTypes(null); if (sqlTypes != null && sqlTypes.length == 1) { return sqlTypes[0]; } } catch (final Exception ignore) { } return Types.OTHER; }
From source file:org.seasar.hibernate.jpa.metadata.HibernateAttributeDesc.java
License:Apache License
/** * Hibernate?????????//from w w w . j a v a2 s .c om * * @param type * Hibernate? * @param value * * @return ??? */ protected Object convert(final Type type, final Object value) { if (type instanceof CustomType) { if (type.getReturnedClass().isEnum()) { final Enum<?> e = Enum.class.cast(value); final int[] sqlTypeArray = type.sqlTypes(factory); switch (sqlTypeArray[0]) { case Types.INTEGER: case Types.NUMERIC: case Types.SMALLINT: case Types.TINYINT: case Types.BIGINT: case Types.DECIMAL: case Types.DOUBLE: case Types.FLOAT: return e.ordinal(); } return e.name(); } } return value; }
From source file:org.seasar.hibernate.jpa.metadata.HibernateEntityDesc.java
License:Apache License
/** * ?{@link Types SQL}??????/*from www . j a v a 2 s .c o m*/ * * @return ?{@link Types SQL}?? */ protected int createDiscriminatorSqlType() { final Type dType = metadata.getDiscriminatorType(); final int[] sqlTypes = dType.sqlTypes(sessionFactory); if (sqlTypes != null && sqlTypes.length > 0) { return sqlTypes[0]; } return Types.OTHER; }