QueryRL / HQL在leftJoin的部分使用序数而不是所需的String值

时间:2014-09-03 10:00:37

标签: hql querydsl

运行查询时出现以下错误

Caused by: org.postgresql.util.PSQLException: FEHLER: Operator existiert nicht: bigint = character varying

查询的重要部分:

[...]
    query.leftJoin(qSomeObj.obj2, qObj2).on(qObj2.col1.eq(enumValue);
    query.where(qSomeObj.obj2.isNull());
[...]

我的值对象中的字段注释如下:

[...]
@Column(name = "col1", nullable = false)
@Enumerated(EnumType.STRING)
private MyEnum col1;
[...]

似乎最终的SQL查询包含enumValue的序号而不是所需的 String 。如果我将相同的谓词放入where子句中就没有这样的错误,因此它似乎是对值对象中的注释做出反应并使用 String

这是QueryDSL还是Hibernate中的某种错误?或许我做错了什么。任何建议将不胜感激。

编辑:

我想我第一次弄错了。它不是那个弄乱我查询的枚举序号。事实上,枚举被视为 String ,因此"特征变化"在错误消息中。 但是参数顺序搞砸了。除了我已发布的部分外,我还对每个关系都有一个客户过滤器。这是一个bigint,所以我的查询第一个参数应该是customerId,但是是枚举值的名称。

0 个答案:

没有答案