Michael, Would you be interested by contributing a patch for this ? It does not mean that it will be commited but at least the idea will be there, opened to everybody...
Jacques ----- Message d'origine ----- De : "Michael Imhof" <[EMAIL PROTECTED]> À : <[email protected]> Envoyé : mardi 15 mai 2007 10:05 Objet : Re: Problems with Oracle Database > > Hi Jacopo, > I saw this note before, but I don't want to install a trigger on the client > database. I would like > to fix the cause and not the problem!! > > I implemented a solution based on the design hibernate is using. In > hibernate you have to define > in a xml file wich dialect you're using. We don't have this definition, but > I'm using the drivername > declared in the entityengine.xml to find the dialect to use. > > In GenericDAO I read the corresponding dialect instance and every value is > passed through this dialect > instance (every dialect implements a method "toSqlString(Object value)"). > The where string values are build in the SqlJdbcUtil class, so that's the > point where I finally use my > dialect class. > If you look at SqlJdbcUtil.addValueSingle(..): > buffer.append('\'').append(value).append('\''); > is now: > Object sqlValue = value; > if (dialect != null) { > sqlValue = dialect.toSqlString(value); > } > buffer.append(sqlValue); > The instance dialect is passed as a parameter to the method. At the moment I > only implemented a > OracleDialect class. All the other drivers are using the default dialect > wich is returning: > return '\'' +value '\''; > > Seems to work fine... > Michael > > > Jacopo Cappellato wrote: > > > > Michael, > > > > have a look at these notes: > > > > http://docs.ofbiz.org/x/gAI > > > > let me know if they help you and if you have additional suggestions for > > OFBiz&Oracle > > > > Jacopo > > > > Michael Imhof wrote: > >> We developed our OfBiz application on a mysql database and all works > >> fine. > >> Deploying the application on the client server with Oracle database I got > >> exceptions with > >> the sandbox: > >> "ORA-01861: literal does not match format string" > >> > >> This is a problem with the date conversion. > >> On MySql, the following SQL Statement is used > >> SELECT .... WHERE RUN_TIME <= '2007-05-15 07:45:10.875' AND .... > >> Using an Oracle database, this statement is wrong and generates the > >> ORA-01861 error. > >> The statement should look like this: > >> SELECT .... WHERE RUN_TIME <= TO_DATE('2007-05-15 07:45:10', > >> 'YYYY-MM-DD HH:MI:SS') AND .... > >> > >> It works fine if the query is generated with the PreparedStatement of the > >> driver. > >> But why the hell is this not always the case??? > >> > >> The call of > >> delegator.storeByCondition("JobSandbox", updateFields, > >> mainCondition); > >> is creating a where statement BY HAND!!! (And of course this statement is > >> not generic and does not > >> work with a oracle database). > >> > >> Michael > >> > >> PS: Probably I will fix this in my ofbiz version, but that will be a big > >> redesign (I don't think I can create a patch > >> out of this. It's a redesign!). > > > > > > > > > > -- > View this message in context: http://www.nabble.com/Problems-with-Oracle-Database-tf3756432.html#a10618443 > Sent from the OFBiz - User mailing list archive at Nabble.com.
