Hi Armin,
> Oliver Seimel wrote:
> > Hi,
> >
> > we migrated from ojb 1.0.1 to 1.0.4
> > DB is Postgres. But I think, that the "problem" is
> independent of the
> > DB.
> > We use the type BIT(1) for boolean values, so a mapping looks like
> > this:
> >
> > > name="emailNotice"
> > column="emailnotice"
> > jdbc-type="BIT"
> > />
> >
> > With version 1.0.1 the generated SQL was ... WHERE
> emailnotice = '1'
> > .
> >
> > With version 1.0.4 the generated SQL is ... WHERE
> emailnotice = 'true'
> > .
> >
> > Thats not good, because the statement fails.
> >
> > Does anybody know why ojb now maps the BIT types to BOOLEAN?
>
> OJB 1.0.4 and higher try to support the JDBC 3.0
> specification which specify to map BIT to boolean
> http://db.apache.org/ojb/docu/guides/jdbc-types.html
> Maybe this cause your problem.
> Could you please post the query/criteria which produce the
> SQL shown above.
Thanks for your response!
here is an example:
Criteria criteria = new Criteria();
criteria.addEqualTo("isCombination", new Boolean(true));
QueryByCriteria query = new QueryByCriteria(LicenseModule.class, criteria);
licenses = broker.getCollectionByQuery(query);
I changed it now to:
criteria.addEqualTo("isCombination", new Integer(1));
p6spy log tells me that it is now correct:
...WHERE isCombination = '1'
but I still get an exception:
...WHERE isCombination = ?'
* Exception message is [ERROR: operator does not exist: bit = integer]
This is strange at the first moment. I think OJB does everything right when
I use new Integer instead of new Boolean (because of the p6spy log - and
Postgres
does accept the query of the log, if I use pgAdmin).
The Postgres log says:
LOG: statement: SELECT
A0.licenseid,A0.class_name,A0.baselicenseid,A0.name,A0.iscombination FROM
License A0 WHERE isCombination =
$1
ERROR: operator does not exist: bit = integer
HINT: No operator matches the given name and argument type(s). You may need to
add explicit type casts.
the message is clear, but as I said, at the moment I don't understand why
Postgres
does not accept the statement from ojb, but accepts it from pgadmin.
(Probably it is the driver's fault?)
So it seems it is not OJBs fault :)
but I would be pleased if someone could give me a hint.
Thanks
Oliver
-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]