次のような休止状態の Usertype があります。
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-type を定義することに固執しています。
<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 を透過的に処理し、データベースに依存しない方法を誰かが知っている場合は、感謝します。