I, as well as probably a lot of other people, ended up hard-coding  the Sql2Java 
source code in Middlegen for what you need and recompile. As an example, this is what 
I have at the bottom of the Sql2Java.java file:

   static {
      _preferredJavaTypeForSqlType.put(Types.TINYINT, "java.lang.Integer");
      _preferredJavaTypeForSqlType.put(Types.SMALLINT, "java.lang.Integer");
      _preferredJavaTypeForSqlType.put(Types.INTEGER, "java.lang.Integer");
      _preferredJavaTypeForSqlType.put(Types.BIGINT, "java.lang.Integer");
      _preferredJavaTypeForSqlType.put(Types.REAL, "java.lang.Float");
      _preferredJavaTypeForSqlType.put(Types.FLOAT, "java.lang.Float");
      _preferredJavaTypeForSqlType.put(Types.DOUBLE, "java.lang.Float");
      _preferredJavaTypeForSqlType.put(Types.DECIMAL, "java.math.BigDecimal");
      _preferredJavaTypeForSqlType.put(Types.NUMERIC, "java.math.BigDecimal");
      _preferredJavaTypeForSqlType.put(Types.BIT, "java.lang.Boolean");
      _preferredJavaTypeForSqlType.put(Types.CHAR, "java.lang.String");
      _preferredJavaTypeForSqlType.put(Types.VARCHAR, "java.lang.String");
      // according to resultset.gif, we should use java.io.Reader, but String is more 
convenient for EJB
      _preferredJavaTypeForSqlType.put(Types.LONGVARCHAR, "java.lang.String");
      _preferredJavaTypeForSqlType.put(Types.BINARY, "byte[]");
      _preferredJavaTypeForSqlType.put(Types.VARBINARY, "byte[]");
      _preferredJavaTypeForSqlType.put(Types.LONGVARBINARY, "byte[]");
      _preferredJavaTypeForSqlType.put(Types.DATE, "java.util.Date");
      _preferredJavaTypeForSqlType.put(Types.TIME, "java.util.Date");
      _preferredJavaTypeForSqlType.put(Types.TIMESTAMP, "java.util.Date");
      _preferredJavaTypeForSqlType.put(Types.CLOB, "byte[]");
      _preferredJavaTypeForSqlType.put(Types.BLOB, "byte[]");
      _preferredJavaTypeForSqlType.put(Types.ARRAY, "java.sql.Array");
      _preferredJavaTypeForSqlType.put(Types.REF, "java.sql.Ref");
      _preferredJavaTypeForSqlType.put(Types.STRUCT, "java.lang.Object");
      _preferredJavaTypeForSqlType.put(Types.JAVA_OBJECT, "java.lang.Object");
   }

Opposed to the above solution, if you are using *only* Hibernate, I would recommend 
getting the most recent (R5 I think) of the Hibernate-Middlegen plugin from 
Hibernate's site and write a class to implement JavaTypeMapper and override the 
"public String getPreferredJavaType(JavaColumn column)" method to have it return what 
you want it to. Then, if using Ant, add a property to the Middlegen/Hibernate subtask 
for 'javaTypeMapper=' and point it to this class (making sure the class is in the 
classpath).

Hope this helps you get started, in between things at the momement so this is a quick 
response.

-D


> 
> -----Original Message-----
> From: Jonathan Scott [mailto:[EMAIL PROTECTED]
> Sent: Wednesday, August 11, 2004 9:25 PM
> To: [EMAIL PROTECTED]
> Subject: [Middlegen-user] mapping DB types to Java types
> 
> 
> Hi All,
> 
> Looking through the MiddleGen site, I am worried it is not at 
> all possible
> to force certain DB types to specific Java classes. 
> 
> PostgreSQL has a type "inet" which is an IP address. 
> MiddleGen does not
> understand this type and thus marks it as "Object" in our 
> hbm.xml files. We
> would like to map it to another class.
> 
> Is there any configuration file/option etc. that I could use 
> to achieve
> this? Any pointers would be more than welcome.
> 
> TIA,
> Jonathan Scott

> 


-------------------------------------------------------
SF.Net email is sponsored by Shop4tech.com-Lowest price on Blank Media
100pk Sonic DVD-R 4x for only $29 -100pk Sonic DVD+R for only $33
Save 50% off Retail on Ink & Toner - Free Shipping and Free Gift.
http://www.shop4tech.com/z/Inkjet_Cartridges/9_108_r285
_______________________________________________
middlegen-user mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/middlegen-user

Reply via email to