我有一个类似这样的休眠用户类型:
public class UUIDHibernateType implements UserType
{
private static final int[] SQL_TYPES = new int[] { Types.CHAR };
public int[] sqlTypes ()
{
return SQL_TYPES;
}
// ...
}
我遇到的问题是,hibernate 会生成一个不正确的 CHAR(1) 类型的 sql 脚本,我实际上需要 CHAR(36)。我将如何定义自定义类型的默认长度?
目前我坚持定义这样的 sql 类型:
<id name="id"
type="org.openscada.ae.server.storage.jdbc.internal.UUIDHibernateType">
<column name="ID" length="36" sql-type="CHAR(36)" not-null="true" />
<generator class="assigned" />
</id>
在这种情况下,这应该不是问题,但是如果需要,我该怎么做呢?
PS:如果有人对如何透明地处理 UUID 和数据库不可知有更好的想法,我将不胜感激。