UserTypes in hibernate give a org.hibernate.MappingException exception

(I apologize for my bad English)

I think hibernate userTypes are not supported by liquibase.
GenerateChangeLog Ant Task gives me a exception when I use hibernate mapping files with userTypes.

Example:
Calendario.hbm.xml:

<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">                                                                                                                                                                                                                              

When I execute generateChangeLog with the suitable hibernate configuration file, the log shows the next:
[generateChangeLog] seen table CALENDARIO
D:…\ant\build.xml:532: liquibase.exception.JDBCException: org.hibernate.MappingException: Could not determine type for: com.itecban.arq.tda.Fecha, at table: CALENDARIO, for columns: [org.hibernate.mapping.Column(fechaFinValidez)]
at org.apache.tools.ant.ProjectHelper.addLocationToBuildException(ProjectHelper.java:541)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:418)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.Project.executeTarget(Project.java:1298)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDefaultExecutor.java:32)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:423)
at org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:137)
… 30 more
Caused by: D:…\ant\build.xml:532: liquibase.exception.JDBCException: org.hibernate.MappingException: Could not determine type for: com.itecban.arq.tda.Fecha, at table: CALENDARIO, for columns: [org.hibernate.mapping.Column(fechaFinValidez)]
at liquibase.ant.GenerateChangeLogTask.execute(GenerateChangeLogTask.java:37)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:105)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:357)
at org.apache.tools.ant.Target.performTasks(Target.java:385)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1329)
at org.apache.tools.ant.helper.SingleCheckExecutor.executeTargets(SingleCheckExecutor.java:38)
at org.eclipse.ant.internal.ui.antsupport.EclipseSingleCheckExecutor.executeTargets(EclipseSingleCheckExecutor.java:30)
at org.apache.tools.ant.Project.executeTargets(Project.java:1181)
at org.apache.tools.ant.taskdefs.Ant.execute(Ant.java:416)
… 52 more
Caused by: liquibase.exception.JDBCException: org.hibernate.MappingException: Could not determine type for: com.itecban.arq.tda.Fecha, at table: CALENDARIO, for columns: [org.hibernate.mapping.Column(fechaFinValidez)]
at liquibase.database.structure.HibernateDatabaseSnapshot.(HibernateDatabaseSnapshot.java:188)
at liquibase.database.HibernateDatabase.createDatabaseSnapshot(HibernateDatabase.java:36)
at liquibase.diff.Diff.compare(Diff.java:62)
at liquibase.ant.GenerateChangeLogTask.execute(GenerateChangeLogTask.java:26)
… 65 more
Caused by: org.hibernate.MappingException: Could not determine type for: com.itecban.arq.tda.Fecha, at table: CALENDARIO, for columns: [org.hibernate.mapping.Column(fechaFinValidez)]
at org.hibernate.mapping.SimpleValue.getType(SimpleValue.java:269)
at org.hibernate.mapping.Column.getSqlTypeCode(Column.java:138)
at liquibase.database.structure.HibernateDatabaseSnapshot.(HibernateDatabaseSnapshot.java:68)
… 68 more

When I use hbm2ddl from hibernate tools to generate DDL script, tool generates the sql script without problems.
I think that liquibase doesn’t support usertypes because it doesn’t ask a classpath to view .jar files that contain classes.

You are right, liquibase does not yet support user types.  It is somethign we are hoping to add at some point, but we have not gotten to it yet.  I created a feature request (http://liquibase.jira.com/browse/CORE-466) that you can watch to follow the progress, if you like.

Nathan