Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hibernate 冬眠+;jpa&x2B;postgresql:没有拨号映射_Hibernate_Postgresql_Jpa - Fatal编程技术网

Hibernate 冬眠+;jpa&x2B;postgresql:没有拨号映射

Hibernate 冬眠+;jpa&x2B;postgresql:没有拨号映射,hibernate,postgresql,jpa,Hibernate,Postgresql,Jpa,我使用本机查询调用postgresql数据库中的函数,代码如下: String query = "select details,rec_xml[1] from f_get_reccomendations(\'/ma:recommendations/ma:recommendation/name/text()\') ORDER BY id DESC LIMIT 1;"; Query q = em.createNativeQuery(query); return q.getResultList();

我使用本机查询调用postgresql数据库中的函数,代码如下:

String query = "select details,rec_xml[1] from f_get_reccomendations(\'/ma:recommendations/ma:recommendation/name/text()\') ORDER BY id DESC LIMIT 1;";
Query q = em.createNativeQuery(query); 
return q.getResultList();
该功能定义为:

CREATE OR REPLACE FUNCTION f_get_reccomendations (
  IN  xpath    varchar(128),
  OUT id       int,
  OUT recs_num int,
  OUT details  varchar(25),
  OUT d_stamp  timestamp,
  OUT rec_xml  xml[]
) RETURNS SETOF RECORD AS
$$
select id, recs_num, details, d_stamp, xpath($1, recs,
          array [
                  array['xs','http://www.w3.org/2001/XMLSchema'],
                  array['ma','http://schemas.medio.com/analytics/1.0']
                ]
          ) from recommendations;
$$
LANGUAGE SQL;
当从psql运行时,它起作用,但当我在代码中运行时,它向我抛出错误: 没有JDBC类型的方言映射:2009


我猜rec_xml被定义为hibernate无法理解的xml[]类型?我怎样才能修好它?首先谢谢:你确定问题出在XML数组上,而不是XML类型本身吗?我发现Hibernate对Pg的XML类型的支持介于差和不存在之间

如果它被证明是数组:尝试将xml数组扩展到一个集合中,这样就可以返回'rec'的交叉连接和其余结果。这将需要在客户端进行过滤以消除重复结果

或者,您可以在Hibernate中为xml[]编写方言类型映射,或者将xml转换为文本,以便返回文本[]