1
2
3
4
5
6
7 package org.asyrinx.joey.gen.hibernate;
8
9 import java.sql.Types;
10
11 import org.asyrinx.joey.gen.jdbc.JdbcUtils;
12
13 import net.sf.hibernate.Hibernate;
14 import net.sf.hibernate.type.NullableType;
15
16 /***
17 * @author takeshi
18 */
19 public class HibernateUtils {
20
21 /***
22 *
23 */
24 public HibernateUtils() {
25 super();
26 }
27
28 public static NullableType getHibernateType(String sqlTypeName, int columnSize, int decimalDigits) {
29 final int sqlType = JdbcUtils.toJdbcType(sqlTypeName);
30 return (sqlType == JdbcUtils.UNKNOWN_TYPE) ? null : getHibernateType(sqlType, columnSize, decimalDigits);
31 }
32
33 public static NullableType getHibernateType(int sqlType, int columnSize, int decimalDigits) {
34
35
36
37 NullableType rv = Hibernate.SERIALIZABLE;
38 if (sqlType == Types.CHAR || sqlType == Types.VARCHAR) {
39 rv = Hibernate.STRING;
40 } else if (sqlType == Types.LONGVARCHAR) {
41 rv = Hibernate.TEXT;
42 } else if (sqlType == Types.BLOB) {
43 rv = Hibernate.BLOB;
44 } else if (sqlType == Types.CLOB) {
45 rv = Hibernate.CLOB;
46 } else if (sqlType == Types.FLOAT || sqlType == Types.REAL) {
47 rv = Hibernate.FLOAT;
48 } else if (sqlType == Types.INTEGER) {
49 rv = Hibernate.INTEGER;
50 } else if (sqlType == Types.DOUBLE) {
51 rv = Hibernate.DOUBLE;
52 } else if (sqlType == Types.DATE) {
53 rv = Hibernate.DATE;
54 } else if (sqlType == Types.TIMESTAMP) {
55 rv = Hibernate.TIMESTAMP;
56 } else if (sqlType == Types.TIME) {
57 rv = Hibernate.TIME;
58 } else if (sqlType == Types.BOOLEAN) {
59 rv = Hibernate.BOOLEAN;
60 } else if (sqlType == Types.SMALLINT) {
61 rv = Hibernate.SHORT;
62 } else if (sqlType == Types.BIT) {
63 rv = Hibernate.BYTE;
64 } else if (sqlType == Types.BIGINT) {
65 rv = Hibernate.LONG;
66 } else if (sqlType == Types.NUMERIC || sqlType == Types.DECIMAL) {
67 if (decimalDigits == 0) {
68 if (columnSize == 1) {
69 rv = Hibernate.BYTE;
70 } else if (columnSize < 5) {
71 rv = Hibernate.SHORT;
72 } else if (columnSize < 10) {
73 rv = Hibernate.INTEGER;
74 } else {
75 rv = Hibernate.LONG;
76 }
77 } else {
78 if (columnSize < 9) {
79 rv = Hibernate.FLOAT;
80 } else {
81 rv = Hibernate.DOUBLE;
82 }
83 }
84 }
85 return rv;
86 }
87
88 }