You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-user@db.apache.org by Oliver Seimel <ol...@gmx.net> on 2008/01/29 19:14:47 UTC

Mapping for type BIT broke afer upgrade from 1.0.1 to 1.0.4

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:

<field-descriptor
    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? 

Thank you very much
Oliver


---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


AW: Mapping for type BIT broke afer upgrade from 1.0.1 to 1.0.4

Posted by Oliver Seimel <ol...@gmx.net>.
 
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:
> > 
> > <field-descriptor
> >     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: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org


Re: Mapping for type BIT broke afer upgrade from 1.0.1 to 1.0.4

Posted by Armin Waibel <ar...@apache.org>.
Hi Oliver,

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:
> 
> <field-descriptor
>     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.

regards,
Armin

> 
> Thank you very much
> Oliver
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
> For additional commands, e-mail: ojb-user-help@db.apache.org
> 
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-user-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-user-help@db.apache.org