Example usage for org.hibernate.type Type sqlTypes

List of usage examples for org.hibernate.type Type sqlTypes

Introduction

In this page you can find the example usage for org.hibernate.type Type sqlTypes.

Prototype

int[] sqlTypes(Mapping mapping) throws MappingException;

Source Link

Document

Return the JDBC types codes (per java.sql.Types ) for the columns mapped by this type.

Usage

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;
}