警告
这是 Hibernate 需要提高的一个领域。从可移植性来说,这个功能可以很好地处理 HQL 的内容,但在其他方面就有所欠缺。
用户可以以多种方式引用 SQL 函数。然而,不是所有的数据库都支持相同的函数集。Hibernate 提供了一种映射逻辑函数名到代理的方法,这个代理知道如何解析特定的函数,甚至可能使用完全不同的物理函数调用。
重要
从技术上来讲,这个函数注册是通过
org.hibernate.dialect.function.SQLFunctionRegistry
类进行处理的,它的目的是允许用户提供自定义的函数定义而无需提供自定义的方言。这种特殊的行为目前还未全部开发完毕。
其中一些功能已经实现,如用户可以在程序里用
org.hibernate.cfg.Configuration
注册函数且这些函数可被 HQL 识别。