bal*_*teo 5 java spring hibernate sql-function dialect
我想知道用JPA/Hibernate注册自定义SQL函数的最佳方法是什么.
我是否必须通过扩展MysqlInnodb方言或有更好的方法?
任何人都可以提供代码示例和指向相关文档的指针吗?
您可能会阅读一些文章,告诉您通过扩展 Hibernate 来注册 SQL 函数Dialect,但这是一个天真的解决方案。
从 Hibernate ORM 5.2.18 和 5.3.1 开始,注册 SQL 函数的最佳方法是提供MetadataBuilderContributor这样的:
public class SqlFunctionsMetadataBuilderContributor
implements MetadataBuilderContributor {
@Override
public void contribute(MetadataBuilder metadataBuilder) {
metadataBuilder.applySqlFunction(
"group_concat",
new StandardSQLFunction(
"group_concat",
StandardBasicTypes.STRING
)
);
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过hibernate.metadata_builder_contributor配置属性传递给 Hibernate :
<property>
name="hibernate.metadata_builder_contributor"
value="com.vladmihalcea.book.hpjp.hibernate.query.function.SqlFunctionsMetadataBuilderContributor"
</property>
Run Code Online (Sandbox Code Playgroud)
或者,如果您在本地引导 Hibernate,则可以将 SQL 函数应用于MetadataBuilder引导期间。
是扩展方言是注册自定义SQL函数的好方法.
在Dialect类构造函数中添加类似的东西.
registerFunction("current_timestamp", new NoArgSQLFunction(Hibernate.TIMESTAMP) );
registerFunction("date", new StandardSQLFunction(Hibernate.DATE) );
Run Code Online (Sandbox Code Playgroud)
查看一个现有方言类的源代码. http://www.koders.com/java/fid0E7F787E2EC52F1DA8DFD264EDFBD2DE904A0927.aspx
| 归档时间: |
|
| 查看次数: |
5813 次 |
| 最近记录: |