我需要调用具有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
有人可以建议解决我的问题吗? 预先感谢。
答案 0 :(得分:0)
您可以使用
将 hstore 参数转换为字符串HStoreConverter.toString(Map<?, ?> map)
使用字符串更改过程参数
procedure_name(input_string_in character varying)
在程序内部,您可以将其从字符串转换回 hstore
CAST (input_string_in as hstore)