我使用 Hibernate 和广泛采用的 Hibernate 查询语言在我的 DAO 中定义查询。
无论如何,与原生 SQL 查询相比,有时 HQL 无法执行特定任务。
例如,以下 Postgres 表达式不能“转换”为 HQL:
my_date > current_date - interval '10 year'
这意味着在某些情况下我正在编写本机查询。考虑到我正在使用另一个数据库进行集成测试(http://hsqldb.org/),它不反映上面 Postgres 表达式的语法。这会导致在使用此类本机查询的 DAO 方法期间出现测试异常。
您如何处理此类案件?我只能想到以下场景:
- 永远不要使用本机查询并尝试在 HQL 中构建所有内容(可能吗?)
- 不要测试使用此类查询的方法(不高兴)
- 生产和开发使用相同的数据库(性能问题)
其他更有趣的解决方案?谢谢