【发布时间】:2021-09-23 14:23:18
【问题描述】:
我在 postgres 中有一个自定义创建的函数,现在我正在尝试从我的代码中调用自定义方法。这是存储库功能
@Query(value = "select function('createCluster',:tName,:time,:iPattern)")
boolean createClusterIndex(@Param("tName") String tableName, @Param("iPattern") String indexPattern, @Param("time") LocalDateTime time);
从此链接开始 https://thorben-janssen.com/database-functions/
我什至在 postgres 方言中通过函数注册
this.registerFunction("createcluster",new StandardSQLFunction("createCluster",new BooleanType()));
但是一旦我运行代码
Caused by: org.hibernate.QueryException: No data type for node: org.hibernate.hql.internal.ast.tree.MethodNode
\-[METHOD_CALL] MethodNode: 'function (createCluster)'
+-[METHOD_NAME] IdentNode: 'createCluster' {originalText=createCluster}
\-[EXPR_LIST] SqlNode: 'exprList'
+-[NAMED_PARAM] ParameterNode: '?' {name=tName, expectedType=null}
+-[NAMED_PARAM] ParameterNode: '?' {name=time, expectedType=null}
\-[NAMED_PARAM] ParameterNode: '?' {name=iPattern, expectedType=null}
at org.hibernate.hql.internal.ast.tree.SelectClause.initializeExplicitSelectClause(SelectClause.java:161) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.ast.HqlSqlWalker.useSelectClause(HqlSqlWalker.java:1018) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.ast.HqlSqlWalker.processQuery(HqlSqlWalker.java:786) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:677) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:313) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:261) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:271) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:191) ~[hibernate-core-5.3.9.Final.jar:5.3.9.Final]
... 106 common frames omitted
这可能是什么原因?我该如何解决这个问题?
我遇到的问题:
Using Spring JPA to setup a Aggregate Function for STRING_AGG with Postgresql for a Group_By
No data type for node: org.hibernate.hql.internal.ast.tree.IdentNode HQL
Write & Call user-defined function in JPQL?
User defined PostgreSQL function in hibernate dialect throws exception
【问题讨论】:
标签: java spring postgresql hibernate jpa