【发布时间】:2023-03-20 12:56:01
【问题描述】:
我有一个简单的查询,我想将其转换为 JPQL / Hibernate。我正在使用 Postgres 14。
select unnest(cast('{hello, world}' as text[]));
真正的查询要复杂一些,会使用新列并将其与现有列连接。
我目前正在使用nativeQuery,但理想情况下我可以摆脱它。所以我尝试了一些方法,但找不到解决方案。
首先我尝试将unnest注册为一个函数。
public class Contributor implements MetadataBuilderContributor {
@Override
public void contribute(MetadataBuilder metadataBuilder) {
metadataBuilder.applySqlFunction(
"unnest",
new StandardSQLFunction("unnest", StandardBasicTypes.CHARACTER_ARRAY)
);
}
}
但是我得到了错误
antlr.MismatchedTokenException: 期待 CLOSE,发现 '['
cast() 似乎有问题。所以我尝试了一些更简单的方法来检查语法。
@Query("select unnest(:vals)")
List<MyDTO> hello(List<String> vals);
这里我又遇到了一个错误。
org.hibernate.hql.internal.ast.QuerySyntaxException:子树的意外结束
我尝试了更多变体,也尝试了类似 function('unnest', :vals) 的方法,但没有任何效果。
任何想法如何使它工作?非常感谢!
【问题讨论】:
标签: sql postgresql hibernate jpa jpql