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