我正在使用 hibernate 来管理应用程序中的数据库操作和 MySQL - 使用 org.hibernate.dialect.MySQLInnoDBDialect 作为 hibernate 方言。但出于测试目的,我使用 HSQLDB 1.8.0.10。
我对这样的查询有问题(在 mysql 上运行良好,但在 hsql 上运行良好):
SELECT DISTINCT(id) FROM table ORDER BY name;
我知道问题出在 unique 和 order by ( http://weblogs.sqlteam.com/jeffs/archive/2007/12/13/select-distinct-order-by-error.aspx ) 上,解决方案可能是这样的:
SELECT DISTINCT(id) FROM table GROUP BY id ORDER BY MAX(name);
但我的问题是,是否有可能在 HSQLDB 中使用 MySQL 方言而不必使用此解决方案?
最佳答案
HSQLDB正确实现了SQL标准,不允许有歧义的查询。无法改变其行为。
最好修改您的 MySQL 查询以使其符合标准。这使您可以更轻松地将应用程序移植到另一个数据库。
关于java - hsqldb 中的 mysql 方言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16025507/