java - 将 map 转换为 HStore

标签 java postgresql spring-boot spring-data-jpa hstore

我需要调用具有 hstore 参数的 Postgresql 函数。

我这样调用它:

@Repository
public interface DocumentRepo extends JpaRepository<DokumentInstancja, Integer> {

    @Query(value = "SELECT * FROM gabinet.test(?)", nativeQuery = true)
    public Integer test(HStore mapa);
}

其中 HStore 是我的包装类:

@Convert(converter = MyHStoreConverter.class)
public class HStore extends HashMap<String, String> {

    public HStore() {
        super();
    }

    public HStore(Map map) {
        super(map);
    }
}

我按照其他 stackoverflow 问题中的建议使用了 Converter,但在那里它用于字段而不是类。但就我而言, map 不是任何其他对象的字段。

我得到的错误:

2018-09-03 15:24:17.864 TRACE 13288 --- [nio-8080-exec-3] o.h.type.descriptor.sql.BasicBinder      : binding parameter [1] as [VARBINARY] - ["key1"=>"val1","key2"=>"val2"]
2018-09-03 15:24:17.865  WARN 13288 --- [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 0, SQLState: 42883
2018-09-03 15:24:17.865 ERROR 13288 --- [nio-8080-exec-3] o.h.engine.jdbc.spi.SqlExceptionHelper   : ERROR: function gabinet.test(bytea) does not exist

有人可以建议解决我的问题吗? 提前致谢。

最佳答案

您可以使用将 hstore 参数转换为字符串

HStoreConverter.toString(Map<?, ?> map)

使用字符串更改过程参数

procedure_name(input_string_in character varying)

在过程中,您可以将其从字符串转换回 hstore

CAST (input_string_in as hstore)

关于java - 将 map 转换为 HStore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150835/

相关文章:

java - 使用 Java 的 OpenGL 2.0 中的模拟时钟

java - 字符串中字符的快速排序

postgresql - postgres 流式复制 - 仅从属索引

postgresql - 我如何使用任何开源 etl 工具将数据从 postgres 迁移到 cassandra?

sql - 链接服务器(从postgresql中读取数据并插入到SQL Server中)

java - 如何跳过空记录 CSVFormat 解析器

java - Play框架文件上传无此类文件异常

java - 导入数据时,thymeleaf 和 ajax 有什么区别?

java - 将结果从 HQL 转换为对象

java - jaxb 生成的类中的继承