Mysql HQL无法查询JSON数据

Mysql HQL无法查询JSON数据,mysql,json,hibernate,hql,Mysql,Json,Hibernate,Hql,这是一个NativeSql工作模式: session.createSQLQueryselect json_lengthfav_货物来自客户,其中id=1.uniqueResult 但如果我像下面这样将其更改为HQL,它会引发一个错误 session.CreateQuerySelectJSON_lengthfavGoods from CustomerEntity,其中id=1.uniqueResult 错误 在实体类CustomerEntity中,字段fav_goods被命名为favGoodsJP

这是一个NativeSql工作模式: session.createSQLQueryselect json_lengthfav_货物来自客户,其中id=1.uniqueResult

但如果我像下面这样将其更改为HQL,它会引发一个错误 session.CreateQuerySelectJSON_lengthfavGoods from CustomerEntity,其中id=1.uniqueResult

错误


在实体类CustomerEntity中,字段fav_goods被命名为favGoods

JPQL或HQL不支持JSON函数

请在此处查找所有受支持的函数:

您必须坚持使用SQL

Caused by: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'json_length' {originalText=json_length}
    \-[EXPR_LIST] SqlNode: 'exprList'
       \-[DOT] DotNode: 'customeren0_.fav_goods' {propertyName=favGoods,dereferenceType=PRIMITIVE,getPropertyPath=favGoods,path={synthetic-alias}.favGoods,tableAlias=customeren0_,className=cn.phyer.bishe.entity.CustomerEntity,classAlias=null}
          +-[IDENT] IdentNode: '{synthetic-alias}' {originalText={synthetic-alias}}
          \-[IDENT] IdentNode: 'favGoods' {originalText=favGoods}
 [select json_length(favGoods) from cn.phyer.bishe.entity.CustomerEntity where id=?1]
    at org.hibernate.QueryException.generateQueryException(QueryException.java:120)
    at org.hibernate.QueryException.wrapWithQueryString(QueryException.java:103)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:220)
    at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:144)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:113)
    at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:73)
    at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:155)
    at org.hibernate.internal.AbstractSharedSessionContract.getQueryPlan(AbstractSharedSessionContract.java:600)
    at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:709)
    ... 39 more
Caused by: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 
 \-[METHOD_CALL] MethodNode: '('
    +-[METHOD_NAME] IdentNode: 'json_length' {originalText=json_length}
    \-[EXPR_LIST] SqlNode: 'exprList'
       \-[DOT] DotNode: 'customeren0_.fav_goods' {propertyName=favGoods,dereferenceType=PRIMITIVE,getPropertyPath=favGoods,path={synthetic-alias}.favGoods,tableAlias=customeren0_,className=cn.phyer.bishe.entity.CustomerEntity,classAlias=null}
          +-[IDENT] IdentNode: '{synthetic-alias}' {originalText={synthetic-alias}}
          \-[IDENT] IdentNode: 'favGoods' {originalText=favGoods}