Jan*_*ana 6 hibernate hibernate-criteria spring-data spring-data-jpa spring-boot
我们有 HibernateMetadataBuilderContributor 如下所示。它适用于 Hibernate 5 或 Spring boot 2.7。但当我们迁移到 Hibernate 6 或 Spring boot 3 时就不起作用了。
public class HibernateMetadataBuilderContributor implements MetadataBuilderContributor {
public static final String STRING_AGG = "string_agg";
public static final String STRING_AGG_ORDER_BY = "string_agg_order_by";
public static final String STRING_AGG_DISTINCT = "string_agg_distinct";
@Override
public void contribute(final MetadataBuilder metadataBuilder) {
metadataBuilder.applySqlFunction(STRING_AGG, new SQLFunctionTemplate(StandardBasicTypes.STRING, "string_agg(?1, ?2)"));
metadataBuilder.applySqlFunction(STRING_AGG_ORDER_BY, new SQLFunctionTemplate(StandardBasicTypes.STRING, "string_agg(?1, ?2 order by ?3)"));
metadataBuilder.applySqlFunction(STRING_AGG_DISTINCT, new SQLFunctionTemplate(StandardBasicTypes.STRING, "string_agg(distinct ?1, ?2)"));
}
}
Run Code Online (Sandbox Code Playgroud)
在 Hibernate 6 中找不到 SQLFunctionTemplate,有什么替代方案吗?
第一:在H6中你不需要这样做!
HQL 现在带有一个内置listagg()
函数,它会自动转换为string_agg()
那些数据库上的名称。请查看有关 HQL 的用户指南章节,了解内置可移植函数的完整列表。
现在,话虽如此……
SQLFunction
H6 中的等效接口是SqmFunctionDescriptor
,它有许多内置实现,您可以查看以获取灵感,包括PatternBasedSqmFunctionDescriptor
.
但我们提供的基本的、简化的、“用户友好的”实现仍然是org.hibernate.dialect.function.StandardSQLFunction
,它现在已经适应了新的、更强大的SqmFunctionDescriptor
框架。
归档时间: |
|
查看次数: |
3388 次 |
最近记录: |