Spring 5 - 在 HQL 中使用未知的 SQL 函数

我尝试在 Spring 中使用 HQL 中的许多 MySQL 函数,这些函数是 Hibernate 不支持的,例如GROUP_CONCAT. Hibernate 会产生以下错误。


Caused by: java.lang.IllegalStateException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode 

 +-[METHOD_CALL] MethodNode: '('

 |  +-[METHOD_NAME] IdentNode: 'GROUP_CONCAT' {originalText=GROUP_CONCAT}

 |  \-[EXPR_LIST] SqlNode: 'exprList'

 |     \-[DOT] DotNode: 'propertyre1_.id' {propertyName=id,dereferenceType=PRIMITIVE,getPropertyPath=id,path=property.id,tableAlias=propertyre1_,className=com.mypackage.MyClas,classAlias=property}

 |        +-[ALIAS_REF] IdentNode: 'propertyre1_.id' {alias=property, className=com.mypackage.MyClass, tableAlias=propertyre1_}

 |        \-[IDENT] IdentNode: 'id' {originalText=id}

但是,我发现可以通过将 hibernate 添加到 hibernate 配置中来将 hibernate 配置为接受自定义函数...


hibernateConfiguration.addSqlFunction("group_concat", new StandardSQLFunction("group_concat", new StringType()));

我正在努力寻找一种使用 Spring Boot 和 Spring 5+ 访问休眠配置的方法。我发现了以下stackoverflow 帖子,但是这似乎适用于较旧版本的 spring,因为LocalSessionFactoryBean不再有命名方法postProcessConfiguration或任何其他明显的方法来操作配置。


在 Spring 5+ 中构建会话工厂之前,有没有办法操纵休眠配置?


Helenr
浏览 407回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java