我想知道最好的方法是什么使用 JPA/Hibernate 注册自定义 SQL 函数.
我是否必须扩展 MysqlInnodb 方言还是有更好的方法?
任何人都可以提供代码示例和相关文档的指针吗?
您可能会阅读一些文章,告诉您通过扩展 Hibernate 来注册 SQL 函数Dialect
,但这是一个幼稚的解决方案。
从 Hibernate ORM 5.2.18 和 5.3.1 开始,注册 SQL 函数的最佳方法是提供MetadataBuilderContributor https://vladmihalcea.com/hibernate-sql-function-jpql-criteria-api-query/像这样:
public class SqlFunctionsMetadataBuilderContributor
implements MetadataBuilderContributor {
@Override
public void contribute(MetadataBuilder metadataBuilder) {
metadataBuilder.applySqlFunction(
"group_concat",
new StandardSQLFunction(
"group_concat",
StandardBasicTypes.STRING
)
);
}
}
您可以通过以下方式将其传递给 Hibernatehibernate.metadata_builder_contributor
配置属性:
<property>
name="hibernate.metadata_builder_contributor"
value="com.vladmihalcea.book.hpjp.hibernate.query.function.SqlFunctionsMetadataBuilderContributor"
</property>
或者,如果您本机引导 Hibernate,则只需将 SQL 函数应用到MetadataBuilder
在引导期间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)