Example usage for org.springframework.jdbc.core.metadata TableParameterMetaData TableParameterMetaData

List of usage examples for org.springframework.jdbc.core.metadata TableParameterMetaData TableParameterMetaData

Introduction

In this page you can find the example usage for org.springframework.jdbc.core.metadata TableParameterMetaData TableParameterMetaData.

Prototype

public TableParameterMetaData(String columnName, int sqlType, boolean nullable) 

Source Link

Document

Constructor taking all the properties.

Usage

From source file:org.springframework.jdbc.core.metadata.GenericTableMetaDataProvider.java

/**
 * Method supporting the metadata processing for a table's columns
 *//*from w  w  w .  ja  v a2  s  .c o  m*/
private void processTableColumns(DatabaseMetaData databaseMetaData, TableMetaData tmd) {
    ResultSet tableColumns = null;
    String metaDataCatalogName = metaDataCatalogNameToUse(tmd.getCatalogName());
    String metaDataSchemaName = metaDataSchemaNameToUse(tmd.getSchemaName());
    String metaDataTableName = tableNameToUse(tmd.getTableName());
    if (logger.isDebugEnabled()) {
        logger.debug("Retrieving metadata for " + metaDataCatalogName + '/' + metaDataSchemaName + '/'
                + metaDataTableName);
    }
    try {
        tableColumns = databaseMetaData.getColumns(metaDataCatalogName, metaDataSchemaName, metaDataTableName,
                null);
        while (tableColumns.next()) {
            String columnName = tableColumns.getString("COLUMN_NAME");
            int dataType = tableColumns.getInt("DATA_TYPE");
            if (dataType == Types.DECIMAL) {
                String typeName = tableColumns.getString("TYPE_NAME");
                int decimalDigits = tableColumns.getInt("DECIMAL_DIGITS");
                // Override a DECIMAL data type for no-decimal numerics
                // (this is for better Oracle support where there have been issues
                // using DECIMAL for certain inserts (see SPR-6912))
                if ("NUMBER".equals(typeName) && decimalDigits == 0) {
                    dataType = Types.NUMERIC;
                    if (logger.isDebugEnabled()) {
                        logger.debug("Overriding metadata: " + columnName + " now NUMERIC instead of DECIMAL");
                    }
                }
            }
            boolean nullable = tableColumns.getBoolean("NULLABLE");
            TableParameterMetaData meta = new TableParameterMetaData(columnName, dataType, nullable);
            this.tableParameterMetaData.add(meta);
            if (logger.isDebugEnabled()) {
                logger.debug("Retrieved metadata: " + meta.getParameterName() + " " + meta.getSqlType() + " "
                        + meta.isNullable());
            }
        }
    } catch (SQLException ex) {
        if (logger.isWarnEnabled()) {
            logger.warn("Error while retrieving metadata for table columns: " + ex.getMessage());
        }
    } finally {
        JdbcUtils.closeResultSet(tableColumns);
    }
}