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

Steve Ebersole (JIRA) noreply at atlassian.com
Fri Apr 1 10:12:08 EDT 2011


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

Steve Ebersole updated HHH-468:
-------------------------------

    Fix Version/s: 4.0.0.Alpha2

Actually, I think this can be handled by the notion we just added in 4.0 where a Dialect can redefine how to treat SQL types.   The basic idea is that {{BooleanType}} would be changed to say that its sql-type is Types.BOOLEAN and that dialects which do not understand that would define an override to say to use Types.BIT instead.  This is all based on the splitting of Type that we did internally into {{org.hibernate.type.descriptor.sql.SqlTypeDescriptor}} and {{org.hibernate.type.descriptor.java.JavaTypeDescriptor}}.  Then org.hibernate.dialect.Dialect#resolveSqlTypeDescriptor is the piece at play here.

> MysqlDialect incorrectly maps java.lang.Boolean to SQL BIT
> ----------------------------------------------------------
>
>                 Key: HHH-468
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-468
>             Project: Hibernate Core
>          Issue Type: Bug
>    Affects Versions: 3.0.3
>         Environment: Hibernate 3.0, MySQL.
>            Reporter: Mark Matthews
>            Assignee: Scott Marlow
>             Fix For: 4.0.0.Alpha2
>
>
> 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