[hibernate-issues] [Hibernate-JIRA] Updated: (HHH-5413) null values for columns mapped as "boolean" cause exception when saving entity with Sybase jdbc4

Raphaël Lemaire (JIRA) noreply at atlassian.com
Thu Sep 16 04:39:23 EDT 2010


     [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5413?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Raphaël Lemaire updated HHH-5413:
---------------------------------

    Attachment: TestBoolean.tgz

Hi,

Here's a Maven project that should make the problem appear.

I've also been able to reproduce the problem using low level JDBC, changing the SQL type.

Hope it helps.

> null values for columns mapped as "boolean" cause exception when saving entity with Sybase jdbc4
> ------------------------------------------------------------------------------------------------
>
>                 Key: HHH-5413
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5413
>             Project: Hibernate Core
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 3.5.3, 3.5.4, 3.6.0.Beta1
>         Environment: Sybase jdbc4
>            Reporter: Strong Liu
>         Attachments: TestBoolean.tgz
>
>
> ASE doesn't allow 'null' value for 'BIT' datatype;
> While performing insert operation using jconn3.jar it permit you to have
> 'null' value, this 'null' value is converted into bit 0 by jconn3 & hence
> ASE doesn't throw any exception;
> But incase of jconn4.jar 'null' value is not converted into bit 0, hence
> jconn4 directly reports an exception for 'null' value(which is the expected
> correct behavior)
> Hibernate persists a null Boolean value by calling:
> PreparedStatement.setNull( index, java.sql.Types.BIT )
> The SQL code, java.sql.Types.BIT, is used because the Hibernate BooleanType defines its code as java.sql.Type.BIT.
> This can be reproduced using an annotations unit test, Java5FeaturesTest.testAutoboxing()..
> Sybase maps bit columns to tinyint, so when the unit test is executed, the column in the underlying table is actually of type tinyint, not bit. Sybase allows nullable tinyint columns, so there should be no problem persisting a null value as null.
> I've verified that changing the call to:
> PreparedStatement.setNull( index, java.sql.Types.TINYINT )
> persists the null value without being converted to 0.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://opensource.atlassian.com/projects/hibernate/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the hibernate-issues mailing list