Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Postgresql 错误:运算符不存在:字符变化=数字_Postgresql_Jpa - Fatal编程技术网

Postgresql 错误:运算符不存在:字符变化=数字

Postgresql 错误:运算符不存在:字符变化=数字,postgresql,jpa,Postgresql,Jpa,所以我一直得到标题错误。我用来创建查询的字符串是 select p from Product p where p.productType.productTypeId in (:productTypeIds) 下面是java的一个片段 List<Long>partTerminologyIds = getProducTypeds(partTerminologys); .................................................

所以我一直得到标题错误。我用来创建查询的字符串是

  select p from Product p where  p.productType.productTypeId in (:productTypeIds)
下面是java的一个片段

    List<Long>partTerminologyIds = getProducTypeds(partTerminologys);
    ..........................................................................
    query.setParameter("partTerminologyIds", productTypeIds);
ListpartTerminologyIds=getProducTypeds(partTerminologys);
..........................................................................
setParameter(“PartTerminologyId”,ProductTypeId);
我不知道为什么会出现这个错误,我的数据库中的partternolgyid是数字18


有什么想法吗?

这看起来像是一个Hibernate查询。您需要执行
query.setParameterList
来指定集合值,否则Hibernate将不知道如何将
:ProductTypeId
扩展到占位符列表,而不是简单地将列表绑定为可序列化的blob(我认为这是一个糟糕的默认值)。

此查询无效:

select p from Product p where  p.productType.productTypeId in (:productTypeIds)
你是说:

SELECT p FROM product p WHERE p.productTypeId IN (:productTypeIds)
或者更确切地说:

SELECT * FROM product p WHERE p.productTypeId IN (:productTypeIds)

如果是,那么查询中
productTypeId
的数据类型是什么。请澄清。

因此,最终结果是“外键”在一个表中是字符串,在另一个表中是数字。我用新脚本重建了数据库,没有对新数据库进行反向工程。

我们使用的是javax.persistence.TypedQuery,它没有setParameterList。我还应该提到这一点MySQL@user517721:MySQL中有效和无效的部分仍有一定的惊喜。我知道这有点晚,但产品类型是另一个表。您在
query.setParameter()中有参数,反之亦然。应该是
query.setParameter(“ProductTypeId”,PartTerminologyId)
。(在
列表
:)后面还需要一个空格)