Hi, OJB uses prepared statements to generate queries - e.g.
SELECT blah FROM foo WHERE datecreated >= ? It then uses the JDBC driver to bind the values to the query PreparedStatement#setObject(ix, value, targetSqlType) http://java.sun.com/j2se/1.4.2/docs/api/java/sql/PreparedStatement.html#setO bject(int,%20java.lang.Object,%20int) For the targetSqlType, OJB uses the definition in the repository. In short, OJB does not put values direcly into the SQL issued to the database. So - what's going on ? I would be looking in these areas : a) does the SQL type in the repository match the datatype of the column in the database ? If there is a mismatch, this could cause the JDBC driver to do some kind of bizarre conversion... b) MySQL jdbc drivers - are you using the latest versions ? Is there a bug in the drivers to do with DATETIME columns ? If there is a specific issue with MySQL and a certain SQL Type, we can deal with it in the PlatformMySQLImpl class in OJB - by the looks of it, we already BLOB/CLOBS/BIT types in a special way. I should add that I am not an OJB developer, merely a long-standing user, and I am even less of a MySQL user (I installed it once, got 70% of our App to work and decided to leave it until someone paid us to do the rest) - and, moreover, am up to my neck in passed deadlines and so can't offer much more practical help. Hope that helps a little, Cheers, Charles. -----Original Message----- From: Jamo Smith [mailto:[EMAIL PROTECTED] Sent: 14 March 2005 02:02 To: OJB Users List Subject: Re: MySQL OJB and Date Objects This is still a huge problem. Under no setup can I get OJB to generate a WHERE clause with a date format other than the default Date.toString(). How do I control the way OJB generates WHERE clauses? On Wed, 9 Mar 2005 11:36:23 -0600, Turcotte Eric D Contr 805 CSPTS/SCE <[EMAIL PROTECTED]> wrote: > I had issues with this as well. You want to use TIMESTAMP as the > jdbc-type and use the JavaDate2SqlTimestampFieldConversion. > > /** > * @ojb.field column="DATECREATED" > * jdbc-type="TIMESTAMP" > * > conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlTi > mestampFieldConversion" > */ > > This introduces a problem with MySQL because the TIMESTAMP column type > updates the record to the current date/time when the record is inserted > or updated. If you want OJB to set the date/time in that column, the > MySQL column type to use is DATETIME. If you are using Torque to > generate your SQL scripts, it will try to use TIMESTAMP as the column > type so I had to write the following workaround for Maven: > > <postGoal name="torque:sql"> > > <ant:replace file="${torque.sql.dir}/${torque.project}-schema.sql" > token="TIMESTAMP" value="DATETIME"/> > > </postGoal> > > This seems like a bug. > > > I can't seem to find any documentation on this. > > > > I have a date object: java.util.Date > > /** > > * @ojb.field column="DATECREATED" > > * jdbc-type="DATE" > > * > conversion="org.apache.ojb.broker.accesslayer.conversions.JavaDate2SqlDa > teFieldConversion" > > */ > > private Date date; > > > > I have tried conversion: > > *.JavaDate2SqlTimeStampField > > > > & I have tried no conversion. > > > > No matter what OJB generates queries like this: > >...... WHERE datecreated >= 'Mon Mar 08 20:53:11 CST 2004' .......... > > > > This doesn't work since MySQL requires dates to be YYYY-MM-DD hh:mm:ss > > for comparison. > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > -- Jamo Smith --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED] ___________________________________________________________ HPD Software Ltd. - Helping Business Finance Business Email terms and conditions: www.hpdsoftware.com/disclaimer --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
