RE: mapping DB types to Java types
"Gill, Cory (FIN)" <[email protected]>
| Newsgroups | gmane.comp.java.ejb.middlegen.user |
|---|---|
| Message-ID | <54A65C6CD63D6946AF00F67C81FED9E839CE9E@cacposhamxis001.cac.ad.gov.on.ca> |
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