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)
。(在列表
:)后面还需要一个空格)