当前位置: 首页 > 知识库问答 >
问题:

用JPA和Hibernate注册SQL函数

袁谭三
2023-03-14

我想知道用JPA/Hibernate注册自定义SQL函数的最佳方法是什么。

共有1个答案

戴高远
2023-03-14

您可能会阅读一些文章,告诉您通过扩展Hibernate方言来注册SQL函数,但这是一个幼稚的解决方案。

自从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
            )
        );
    }
}

您可以通过Hibernate.metadata_builder_contributor配置属性将其传递给Hibernate:

<property>
    name="hibernate.metadata_builder_contributor" 
    value="com.vladmihalcea.book.hpjp.hibernate.query.function.SqlFunctionsMetadataBuilderContributor"
</property>

或者,如果以本地方式引导Hibernate,则可以在引导过程中将SQL函数应用于metadatabuilder

 类似资料:
  • 问题内容: 我想知道 用JPA / Hibernate注册自定义SQL函数 的最佳方法是什么。 我需要扩展MysqlInnodb的方言还是有更好的方法? 谁能提供代码示例和相关文档的指针? 问题答案: 是的,扩展方言是注册自定义SQL函数的好方法。 在Dialect类的构造函数中添加类似的内容。 查看现有的方言类之一的源代码。 http://www.koders.com/java/fid0E7F7

  • 问题内容: 我正在使用hibernate模式开发应用程序。当我尝试创建登录页面时,出现Sql Injection问题。我有以下代码: 在这种情况下,如何防止Sql Injection?loginInfo表的创建表语法如下: 问题答案: 您还有其他选择,请参阅mkyong的这篇不错的文章。

  • 问题内容: 有一个结构。我想以这种方式链接这三个实体:公司应包含ID,公司名称和部门列表,每个部门都有一个工人列表,ID和部门名称。每个工人都有名字,身份证。 我试图与一对多和多对一建立联系,但未成功。 公司 部 工人 我从开始: 它填充公司,但不填充其他表,也没有创建任何联接(映射)错误: 问题答案: 除了Glenn Lane的答案中提到的级联,您还需要了解双向关联是如何工作的。 它们有一个所有

  • 扩展内可以调用registerFunction来注册内置函数到PHP中。需要注意Zend有限制,必须在Extension对象创建时注册函数。这与类的注册不同,扩展类必须在onStart回调中注册。 PHPX_EXTENSION() { Extension *ext = new Extension("test", "0.0.1"); ext->registerFunction(PHP

  • 问题内容: 我在我们的项目和Hibernate Domain Pojo对象的基于注释的配置中使用Hibernate。对于基于注释的配置,我们有两个选择 使用基于JPA的注释 使用Hibernate本机注释 当前,我们对POJO文件使用基于JPA的注释配置,并使用Hibernate本机API(如SessionFactory,Session等)打开会话并执行数据库操作。 我有以下问题: 混合使用JPA

  • 我最近发现自己正在编写以下代码: 一位同事指出 然而, 基于这一点,我得到的印象是我没有正确理解,我开始怀疑我的原始代码是否安全。 DR 使用引用要用作侦听器且需要多次引用的方法(例如,添加+删除)是否安全? 关于匿名类等的幕后实际发生了什么?