我有一个没有实体对象的简单主类,需要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;
}
SMILET
相关分类