【问题标题】:How to disable hibernate formula like filter? Is this possible?如何禁用过滤器等休眠公式?这可能吗?
【发布时间】:2026-01-17 11:35:01
【问题描述】:

在 Hibernate ORM 中,我们可以使用
session.disableFilter("filterName");
禁用过滤器 有没有办法在休眠中禁用formula(使用xml映射配置)?
我想在某些情况下禁用公式以提高性能。

【问题讨论】:

    标签: java hibernate formula


    【解决方案1】:

    如果您使用的是 JPA 2.1,则可以使用函数调用功能。为此,您应该将公式查询移动到数据库函数中,并在 select 子句中调用该函数。例如,假设 calculate 是一个带有两个数字参数的数据库函数。 那么你可以通过这种方式调用这个函数:

    Object r = em.createQuery("SELECT function('calculate', a.id, 1) FROM Author a WHERE a.id = 1").getSingleResult();
    

    你必须通过这种方式注册你的自定义函数:

    public class MyPostgreSQL9Dialect extends PostgreSQL94Dialect {
    
        public MyPostgreSQL9Dialect() {
            super();
            registerFunction("calculate", new StandardSQLFunction("calculate"));
        }
    }
    

    更多信息请查看this

    【讨论】: