在导致ClassCastException

时间:2016-06-14 10:06:33

标签: hibernate querydsl

我正在尝试构建一个只返回枚举值的查询。我想用一个案例来说是正确的方法,但我遇到了以下例外:

Caused by: java.lang.ClassCastException: org.hibernate.hql.internal.ast.tree.ParameterNode cannot be cast to org.hibernate.hql.internal.ast.tree.SelectExpression
at org.hibernate.hql.internal.ast.tree.CaseNode.getFirstThenNode(CaseNode.java:44) ~[hibernate-core-4.3.1.Final.jar:4.3.1.Final]

这是导致Exception的查询(我试图尽可能抽象它来简化示例(e.count实际上是一个子查询)):

QEntity e = new QEntity("e");

EnumExpression<EnumType> cases = new CaseBuilder()
    .when(e.count.eq(1)).then(EnumType.ONE)
    .when(e.count.eq(2)).then(EnumType.TWO)
    .otherwise(EnumType.MORE);

new JPAQuery(em()).from(e).where(e.enumType.eq(cases)).singleResult(e.enumType);

使用QueryDSL 3.6.9

使用QueryDSL 3.7.3进行复制

我不确定我是否以错误的方式使用QueryDSL,或者是否不支持。

0 个答案:

没有答案