【问题标题】:ERROR: operator does not exist: character varying = numeric错误:运算符不存在:字符变化 = 数字
【发布时间】:2012-02-09 20:22:41
【问题描述】:

所以我不断收到标题错误。我用来创建查询的字符串是,

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

这是java的剪辑

    List<Long>partTerminologyIds = getProducTypeds(partTerminologys);
    ..........................................................................
    query.setParameter("partTerminologyIds", productTypeIds);

我不知道为什么会出现此错误,我的数据库中的 partTerminolgyId 是数字 18。

有什么想法吗???

【问题讨论】:

  • 反之,您在query.setParameter() 中有参数。应该是query.setParameter("productTypeIds", partTerminologyIds)。 (List&lt;Long&gt; 后面还需要一个空格 :))

标签: postgresql jpa


【解决方案1】:

所以最后它最终成为一个“外键”是一个表中的字符串和另一个表中的数字。我用新脚本重建了数据库,并没有对新数据库进行逆向工程。

【讨论】:

    【解决方案2】:

    此查询无效:

    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 的数据类型是什么。请澄清。

    【讨论】:

    • 我知道这有点晚了,但产品类型是另一个表。
    【解决方案3】:

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

    【讨论】:

    • 我们正在使用没有 setParameterList 的 javax.persistence.TypedQuery。另外我应该提到这与 MySQL 一起使用
    • @user517721:什么在 MySQL 中起作用,什么不起作用,保留了一定的惊喜元素。
    猜你喜欢
    • 2011-07-03
    • 2012-05-19
    • 2014-06-30
    • 2020-03-19
    • 1970-01-01
    • 2021-12-09
    • 2021-11-12
    • 2016-04-16
    相关资源
    最近更新 更多