我正在尝试构建一个只返回枚举值的查询。我想用一个案例来说是正确的方法,但我遇到了以下例外:
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,或者是否不支持。