Hi Darren,
Thanks for the information. I just opened up my own custom plugin (extends
Java Plugin) and added the following lines in the init() method:
Sql2Java.overridePreferredJavaTypeForSqlType(Types.INTEGER,
"Integer");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.TIMESTAMP,
"java.sql.Timestamp");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.DATE,
"java.sql.Date");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.DECIMAL,
"java.math.BigDecimal");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.NUMERIC,
"java.math.BigDecimal");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.CHAR,
"String");
Sql2Java.overridePreferredJavaTypeForSqlType(Types.SMALLINT,
"Integer");
Works like a charm... and no modifying of the preferences file required!
Thanks,
Cory
-----Original Message-----
From: Darren Hartford [mailto:[EMAIL PROTECTED]
Sent: Thursday, August 12, 2004 9:28 AM
To: [EMAIL PROTECTED]
Subject: AW: [Middlegen-user] mapping DB types to Java types
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
-------------------------------------------------------
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