将 Grails/Hibernate 与旧数据库结合使用。如何创建缺失的函数?
题
所以 Hibernate 支持最新版本的 Firebird,这真是太棒了。但...
我这里有一个 Firebird 1.5.2 数据库。我的 Grails 应用程序通过 Hibernate 使用此数据库...到目前为止一切都很好。
我的应用程序发送带有我的数据库未知功能的查询。例如函数 LOWER,自 2.x 版本起 Firebird 就支持该函数。
我的问题:是否可以为我的数据库获取特殊的 Hibernate Dialect?目前我正在使用:方言 =“org.hibernate.dialect.FirebirdDialect”
我如何帮助我的数据库处理这个未知的功能?
解决方案
您可以通过子类化 FirebirdDialect 并覆盖所有应返回不同值的函数来创建自己的方言类。
对于需要将 Hibernate 使用的函数重命名为小写的简单情况,您可以简单地在 Hibernate 配置中设置以下内容:
hibernate.query.substitutions toLowercase=mylower
但是,由于 Firebird 1.5 没有 toLowercase 函数,您需要自己实现它 如 Firebird 文档中所述.
不隶属于 StackOverflow