openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rick Curtis <curti...@gmail.com>
Subject Re: PostgreSQL BIT/Boolean madness
Date Wed, 08 Jan 2014 03:31:30 GMT
It isn't clear to me what is going on, but with the DBDictionary you can
change the type of column that boolean / bit field types are mapped to.
Perhaps you can change the bitTypeName / booleanTypeName to see if you can
get something working? To change these values you can change the type to
set the property openjpa.jdbc.DBDictionary=postgres(bitTypeName="BIT").

HTH,
Rick


On Tue, Jan 7, 2014 at 7:38 PM, Hal Hildebrand <hal.hildebrand@me.com>wrote:

> So, I have a serious problem.  I have tables that are defined to have
> BOOLEAN columns.  When I run this with PostgreSQL JDBC drivers, from the
> middle tier, this works just fine.  Everything peachy keen.  However….
>
> I’m also running this code inside the database via PL/Java.  When running
> inside the session as a stored procedure, a different JDBC driver is used -
> i.e. the one integrated into PL/Java.  This JDBC driver works fine for the
> most part.  But the problem is that when I try to set NULL to BOOLEAN
> columns, OpenJPA barfs:
>
> Caused by: <openjpa-2.2.2-r422266:1468616 fatal general error>
> org.apache.openjpa.persistence.PersistenceException: column "boolean_value"
> is of type boolean but expression is of type bit {prepstmnt 108675190
> INSERT INTO ruleform.job_attribute (id, notes, update_date, binary_value,
>         boolean_value, integer_value, numeric_value, sequence_number,
>         text_value, timestamp_value, job, research, updated_by, attribute,
>         unit)
>     VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
> [params=(long) 1, (null) null, (null) null, (null) null, (null) null,
> (null) null, (BigDecimal) 1500, (int) 1, (null) null, (null) null, (long)
> 55, (null) null, (long) 3, (long) 56, (null) null]} [code=0, state=42804]
>
> I have created a test case where I create a simple table with a BOOLEAN
> column and then use the raw JDBC driver to insert a NULL value into a row
> when running inside of PL/Java and it just works fine.
>
> So I’m guessing there’s some weird meta data thing going on.  I did a lot
> of googling to see what I could find out, and basically it seems like
> there’s an issue with type 2 drivers vs type 3 drivers with PostgreSQL BIT
> and BOOLEAN.
>
> Thus, the question I have is there some setting in OpenJPA I can use to
> get around this?  Things seem to turn nightmarish if I convert all my
> columns to BIT and try to deal with that.  But hey, if there’s a SQL way
> out of this level of hell, I’ll gladly do that as well.
>
> Any help would be appreciated.
>
> -Hal




-- 
*Rick Curtis*

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message