【发布时间】:2010-01-05 15:31:35
【问题描述】:
我有一个类似这样的休眠用户类型:
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 和数据库不可知论有更好的了解,我将不胜感激。
【问题讨论】: