openjpa-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Hal Hildebrand <>
Subject PostgreSQL BIT/Boolean madness
Date Wed, 08 Jan 2014 01:38:26 GMT
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, 
    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.

View raw message