1616 * @author max (based on parts from Sql2Java from Middlegen)
1717 *
1818 */
19- public final class JDBCToHibernateTypeHelper {
19+ public final class JdbcToHibernateTypeHelper {
2020
21- private JDBCToHibernateTypeHelper () {
21+ private JdbcToHibernateTypeHelper () {
2222
2323 }
2424
2525 /** The Map containing the preferred conversion type values. */
2626 private static final Map <Integer , String []> PREFERRED_HIBERNATETYPE_FOR_SQLTYPE = new HashMap <Integer , String []>();
2727
2828 static {
29- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .TINYINT ), new String [] { "byte" , Byte .class .getName ()} );
30- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .SMALLINT ), new String [] { "short" , Short .class .getName ()} );
31- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .INTEGER ), new String [] { "int" , Integer .class .getName ()} );
32- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .BIGINT ), new String [] { "long" , Long .class .getName ()} );
33- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .REAL ), new String [] { "float" , Float .class .getName ()} );
34- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .FLOAT ), new String [] { "double" , Double .class .getName ()} );
35- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .DOUBLE ), new String [] { "double" , Double .class .getName ()});
36- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .DECIMAL ), new String [] { "big_decimal" , "big_decimal" });
37- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .NUMERIC ), new String [] { "big_decimal" , "big_decimal" });
38- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .BIT ), new String [] { "boolean" , Boolean .class .getName ()});
39- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .BOOLEAN ), new String [] { "boolean" , Boolean .class .getName ()});
40- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .CHAR ), new String [] { "char" , Character .class .getName ()});
41- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .VARCHAR ), new String [] { "string" , "string" });
42- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .LONGVARCHAR ), new String [] { "string" , "string" });
43- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .BINARY ), new String [] { "binary" , "binary" });
44- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .VARBINARY ), new String [] { "binary" , "binary" });
45- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .LONGVARBINARY ), new String [] { "binary" , "binary" });
46- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .DATE ), new String [] { "date" , "date" });
47- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .TIME ), new String [] { "time" , "time" });
48- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .TIMESTAMP ), new String [] { "timestamp" , "timestamp" });
49- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (Types .CLOB ), new String [] { "clob" , "clob" });
50- PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .put (new Integer (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:
5353 //preferredJavaTypeForSqlType.put(new Integer(Types.ARRAY), "java.sql.Array");
@@ -87,7 +87,7 @@ else if (precision < 19) {
8787 return "string" ;
8888 }
8989
90- String [] result = (String []) PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .get (new Integer (sqlType ) );
90+ String [] result = (String []) PREFERRED_HIBERNATETYPE_FOR_SQLTYPE .get (Integer . valueOf (sqlType ) );
9191
9292 if (result ==null ) {
9393 return null ;
@@ -166,7 +166,7 @@ public static String getJDBCTypeName(int value) {
166166 }
167167 }
168168
169- String name = (String ) jdbcTypeValues .get (new Integer (value ) );
169+ String name = (String ) jdbcTypeValues .get (Integer . valueOf (value ) );
170170
171171 if (name !=null ) {
172172 return name ;
@@ -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