JPQL运算符返回java.lang.IllegalStateException-节点没有数据类型:org.hibernate.hql.internal.ast.tree.MethodNode

JPQL运算符返回java.lang.IllegalStateException-节点没有数据类型:org.hibernate.hql.internal.ast.tree.MethodNode,java,operators,jpql,Java,Operators,Jpql,我一直在Stackoverflow周围,并测试了许多建议,但都没有成功 我将此SELECT运算符('ToChar',a.created,'MM-YYYY')作为_月,按_月从帐户中按组计数(a)查询返回一个错误,令我失望的是,我无法解决该错误 错误是: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode \-[METHOD_CALL] Me

我一直在Stackoverflow周围,并测试了许多建议,但都没有成功

我将此
SELECT运算符('ToChar',a.created,'MM-YYYY')作为_月,按_月从帐户中按组计数(a)
查询返回一个错误,令我失望的是,我无法解决该错误

错误是:

java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'OPERATOR' {originalText=OPERATOR}
    \-[EXPR_LIST] SqlNode: 'exprList'
       +-[QUOTED_STRING] LiteralNode: ''ToChar''
       +-[DOT] DotNode: 'account0_.created' {propertyName=created,dereferenceType=PRIMITIVE,getPropertyPath=created,path=a.created,tableAlias=account0_,className=com.eoh.permasys.entities.Account,classAlias=a}
       |  +-[ALIAS_REF] IdentNode: 'account0_.id' {alias=a, className=com.eoh.permasys.entities.Account, tableAlias=account0_}
       |  \-[IDENT] IdentNode: 'created' {originalText=created}
       \-[QUOTED_STRING] LiteralNode: ''MM-YYYY''

任何能帮助我的人,我都非常感激。谢谢。

以防其他人遇到类似问题。我最终使用了不同的JPQL查询来实现我的目标

SELECT EXTRACT(MONTH FROM a.created), EXTRACT(YEAR FROM a.created), COUNT(a) FROM Account AS a GROUP BY EXTRACT(MONTH FROM a.created), EXTRACT(YEAR FROM a.created)
然后我返回一个
列表

完整的方法是

public List<Object[]> countAccountsCreatedPerMonth() {
        EntityManager em = getEntityManager();
        try {
            Query q = em.createQuery("SELECT EXTRACT(MONTH FROM a.created), EXTRACT(YEAR FROM a.created), COUNT(a) FROM Account AS a GROUP BY EXTRACT(MONTH FROM a.created), EXTRACT(YEAR FROM a.created)");
            return q.getResultList();
        } finally {
            em.close();
        }
    }
公共列表countAccountsCreatedPerMonth(){
EntityManager em=getEntityManager();
试一试{
Query q=em.createQuery(“选择提取(从a.created开始的月份)、提取(从a.created开始的年份)、按提取(从a.created开始的月份)、提取(从a.created开始的年份)将(a)从账户中分组计算”);
返回q.getResultList();
}最后{
em.close();
}
}
我不知道这是否是最好的方法,但这确实对我有效