[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-468) MysqlDialect incorrectly maps java.lang.Boolean to SQL BIT

Laurent Mallet (JIRA) noreply at atlassian.com
Thu May 8 04:46:33 EDT 2008


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_30146 ] 

Laurent Mallet commented on HHH-468:
------------------------------------

Hi gavin,

My team is working with Seam and jboss 4.2 and discover this bug when we install our application on the pre-production plateform
on our entities objects. 

Our pre-production and production plateforms are in RHEL 5. Our developpement plateform is on RHEL 4.
The main difference is also the MySQL version.

This bug is really annonying because :
- RHEL 5 install version 5 of MySQL (No support on MySQL 4)
- MySQL 4 is at end of his lifecycle
- in JPA, it's so ugly to change our code from boolean to int
- a search in google "MySQL 5 boolean BIT problem" shows so many desesperate people
- credibility of jboss : this bug is so annoying that my team doesn't understand that it could be possible; they are afraid that it could have
  other ugly bugs.. 

Laurent Mallet
CTO of Oxalya



> MysqlDialect incorrectly maps java.lang.Boolean to SQL BIT
> ----------------------------------------------------------
>
>                 Key: HHH-468
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-468
>             Project: Hibernate3
>          Issue Type: Bug
>    Affects Versions: 3.0.3
>         Environment: Hibernate 3.0, MySQL.
>            Reporter: Mark Matthews
>            Assignee: Scott Marlow
>
> I didn't track down how java.lang.Boolean gets mapped to Types.BIT in hibernate, but you probably _don't_ want to map to "bit" like you do in MysqlDialect. 
> "bit", according to SQL99 (it's not in the core standard, and the type was actually dropped for sql2k3) is a bitfield, not a boolean value. You can of course define a bit(1), but it is technically more correct for java.lang.Boolean to map to a SQL BOOLEAN for MySQL since we support a BOOLEAN and a BIT. 
> It looks like the JDBC-3.0 guys ignored what the standard said, because in reality you'd want BIT to map to something like byte[], or java.util.BitSet if you were tracking how the SQL standard defines BIT.
> I'm guessing you probably want to map to "boolean", which the JDBC driver will automagically convert for you, as it silently maps to TINYINT(1) on the server side.

-- 
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