我有一个没有实体对象的简单主类,需要UUID作为输出的普通SQL。我得到一个映射异常,要解决该映射异常,我创建了自己的自定义方言,即使那时该映射异常仍然存在。休眠版本非常旧,为3.2.6,由于受限制,我无法升级。让我知道我是否仍然可以解决。我的函数看起来像这样:SQLQuery getGidQuery = session.createSQLQuery("SELECT gid FROM table WHERE id = " + result.getId());UUID gid = UUID.fromString(getGidQuery.uniqueResult().toString());为避免上述异常,我创建了自己的方言类,扩展了PostgresDialect,其中包括UUID方言,但仍引发异常。public class PostgresUuidDialect extends PostgreSQLDialect {public PostgresUuidDialect() { super(); registerColumnType(java.sql.Types.OTHER, "pg-uuid");}}我的配置创建private static Configuration getDatabaseConfiguration(CommandLine commandLine, String database) { Configuration configuration = new AnnotationConfiguration(); configuration.setProperty("hibernate.connection.username", commandLine.getOptionValue('u')); configuration.setProperty("hibernate.connection.password", commandLine.getOptionValue('p')); configuration.setProperty("hibernate.connection.url", "jdbc:postgresql://" + commandLine.getOptionValue('h') + ":" + commandLine.getOptionValue("o") + "/" + database + "?searchpath=" + database); configuration.setProperty("hibernate.dialect", "<package>.PostgresUuidDialect"); return configuration;}
1 回答
SMILET
TA贡献1796条经验 获得超4个赞
尝试以下方法:
.addScalar("ID", StringType.INSTANCE)
(使用正确的类型,不一定使用StringType)
RegisterHibernateType( ... )
在您的构造函数中
添加回答
举报
0/150
提交
取消