休眠,获取uuid的映射异常

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

}


慕尼黑的夜晚无繁华
浏览 149回答 1
1回答

SMILET

尝试以下方法:.addScalar("ID",&nbsp;StringType.INSTANCE)(使用正确的类型,不一定使用StringType)RegisterHibernateType(&nbsp;...&nbsp;)在您的构造函数中
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java