@@ -26,34 +26,34 @@ private JdbcToHibernateTypeHelper() {
2626 private static final Map <Integer , String []> PREFERRED_HIBERNATETYPE_FOR_SQLTYPE = new HashMap <Integer , String []>();
2727
2828 static {
29- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TINYINT ), new String [] { "byte" , Byte .class .getName ()} );
30- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .SMALLINT ), new String [] { "short" , Short .class .getName ()} );
31- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .INTEGER ), new String [] { "int" , Integer .class .getName ()} );
32- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BIGINT ), new String [] { "long" , Long .class .getName ()} );
33- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .REAL ), new String [] { "float" , Float .class .getName ()} );
34- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .FLOAT ), new String [] { "double" , Double .class .getName ()} );
35- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DOUBLE ), new String [] { "double" , Double .class .getName ()});
36- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DECIMAL ), new String [] { "big_decimal" , "big_decimal" });
37- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .NUMERIC ), new String [] { "big_decimal" , "big_decimal" });
38- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BIT ), new String [] { "boolean" , Boolean .class .getName ()});
39- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BOOLEAN ), new String [] { "boolean" , Boolean .class .getName ()});
40- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .CHAR ), new String [] { "char" , Character .class .getName ()});
41- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .VARCHAR ), new String [] { "string" , "string" });
42- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .LONGVARCHAR ), new String [] { "string" , "string" });
43- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BINARY ), new String [] { "binary" , "binary" });
44- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .VARBINARY ), new String [] { "binary" , "binary" });
45- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .LONGVARBINARY ), new String [] { "binary" , "binary" });
46- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DATE ), new String [] { "date" , "date" });
47- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TIME ), new String [] { "time" , "time" });
48- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TIMESTAMP ), new String [] { "timestamp" , "timestamp" });
49- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .CLOB ), new String [] { "clob" , "clob" });
50- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BLOB ), new String [] { "blob" , "blob" });
29+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TINYINT ), new String [] { "byte" , Byte .class .getName ()} );
30+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .SMALLINT ), new String [] { "short" , Short .class .getName ()} );
31+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .INTEGER ), new String [] { "int" , Integer .class .getName ()} );
32+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BIGINT ), new String [] { "long" , Long .class .getName ()} );
33+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .REAL ), new String [] { "float" , Float .class .getName ()} );
34+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .FLOAT ), new String [] { "double" , Double .class .getName ()} );
35+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DOUBLE ), new String [] { "double" , Double .class .getName ()});
36+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DECIMAL ), new String [] { "big_decimal" , "big_decimal" });
37+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .NUMERIC ), new String [] { "big_decimal" , "big_decimal" });
38+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BIT ), new String [] { "boolean" , Boolean .class .getName ()});
39+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BOOLEAN ), new String [] { "boolean" , Boolean .class .getName ()});
40+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .CHAR ), new String [] { "char" , Character .class .getName ()});
41+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .VARCHAR ), new String [] { "string" , "string" });
42+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .LONGVARCHAR ), new String [] { "string" , "string" });
43+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BINARY ), new String [] { "binary" , "binary" });
44+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .VARBINARY ), new String [] { "binary" , "binary" });
45+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .LONGVARBINARY ), new String [] { "binary" , "binary" });
46+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .DATE ), new String [] { "date" , "date" });
47+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TIME ), new String [] { "time" , "time" });
48+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .TIMESTAMP ), new String [] { "timestamp" , "timestamp" });
49+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .CLOB ), new String [] { "clob" , "clob" });
50+ PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (Integer .valueOf (Types .BLOB ), new String [] { "blob" , "blob" });
5151
5252 //Hibernate does not have any built-in Type for these:
53- //preferredJavaTypeForSqlType.put(new Integer(Types.ARRAY), "java.sql.Array");
54- //preferredJavaTypeForSqlType.put(new Integer(Types.REF), "java.sql.Ref");
55- //preferredJavaTypeForSqlType.put(new Integer(Types.STRUCT), "java.lang.Object");
56- //preferredJavaTypeForSqlType.put(new Integer(Types.JAVA_OBJECT), "java.lang.Object");
53+ //preferredJavaTypeForSqlType.put(new Integer(Types.ARRAY), "java.sql.Array");
54+ //preferredJavaTypeForSqlType.put(new Integer(Types.REF), "java.sql.Ref");
55+ //preferredJavaTypeForSqlType.put(new Integer(Types.STRUCT), "java.lang.Object");
56+ //preferredJavaTypeForSqlType.put(new Integer(Types.JAVA_OBJECT), "java.lang.Object");
5757 }
5858
5959 /* (non-Javadoc)
@@ -146,7 +146,7 @@ private static void checkTypes() {
146146 }
147147 }
148148
149- public static String getJDBCTypeName (int value ) {
149+ public static String getJDBCTypeName (int value ) {
150150 if (jdbcTypeValues ==null ) {
151151 jdbcTypeValues = new HashMap <Integer , String >();
152152 Field [] fields = Types .class .getFields ();
@@ -183,17 +183,25 @@ public static String getJDBCTypeName(int value) {
183183 * @throws SQLException
184184 */
185185
186- // scale and precision have numeric column
187- public static boolean typeHasScaleAndPrecision (int sqlType ) {
188- return (sqlType == Types .DECIMAL || sqlType == Types .NUMERIC
189- || sqlType == Types .REAL || sqlType == Types .FLOAT || sqlType == Types .DOUBLE );
190- }
191-
192- // length is for string column
193- public static boolean typeHasLength (int sqlType ) {
194- return (sqlType == Types .CHAR || sqlType == Types .DATE
195- || sqlType == Types .LONGVARCHAR || sqlType == Types .TIME || sqlType == Types .TIMESTAMP
196- || sqlType == Types .VARCHAR );
197- }
198- }
186+ // scale is for non floating point numeric columns
187+ public static boolean typeHasScale (int sqlType ) {
188+ return (sqlType == Types .DECIMAL || sqlType == Types .NUMERIC );
189+ }
190+
191+ // precision is for numeric columns
192+ public static boolean typeHasPrecision (int sqlType ) {
193+ return (sqlType == Types .DECIMAL || sqlType == Types .NUMERIC
194+ || sqlType == Types .REAL || sqlType == Types .FLOAT || sqlType == Types .DOUBLE );
195+ }
199196
197+ public static boolean typeHasScaleAndPrecision (int sqlType ) {
198+ return typeHasScale (sqlType ) && typeHasPrecision (sqlType );
199+ }
200+
201+ // length is for string columns
202+ public static boolean typeHasLength (int sqlType ) {
203+ return (sqlType == Types .CHAR || sqlType == Types .DATE
204+ || sqlType == Types .LONGVARCHAR || sqlType == Types .TIME || sqlType == Types .TIMESTAMP
205+ || sqlType == Types .VARCHAR );
206+ }
207+ }
0 commit comments