如何禁用像过滤器一样的hibernate公式?这可能吗?

时间:2018-05-12 06:31:58

标签: java hibernate formula

在Hibernate ORM中我们可以使用
来禁用过滤器 session.disableFilter("filterName");
是否有任何解决方案可以在hibernate中禁用formula(使用xml映射配置)? 我想在某些情况下禁用公式以提高性能。

1 个答案:

答案 0 :(得分: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