HSQL 中无法识别交叉连接
Posted
技术标签:
【中文标题】HSQL 中无法识别交叉连接【英文标题】:Cross join not recognized in HSQL 【发布时间】:2011-09-22 11:17:12 【问题描述】:我正在使用 HSQL 1.7 版。有一部分我有如下的 HQL
String hql = "来自 ProductInv prodInv where prodInv.product.id in (:prodList)";
prodList包含产品id列表,上面的hql是获取prodList中所需产品id的产品库存。
这个 hql 被翻译成带有“交叉连接”的原生 sql 查询。当这对我的实际 db2 起作用时,它可以正常工作。但是我基于 HSQL 的单元测试失败了。它说“交叉连接”不是公认的关键字。
【问题讨论】:
【参考方案1】:您需要升级到最新版本的 HSQLDB 之一(HSQLDB 版本 1.7.x 至少有 7 年的历史)。
如果您的 Hibernate 版本是 3.6 或更高版本,请使用最新的 HSQLDB(2.2.8 或更高版本)。对于旧版本的 Hibernate,请使用 1.8.1.3。
【讨论】:
我会尝试使用最新版本。 我的 JPA 查询被转换为delete from A cross join B b_ where b1=?
,这不受 HSQLDB 2.3.3 和 HSQLDB 2.5.0 的支持。
@Julien 需要为 HSQLDB 设置您的 JPA 提供程序
@fredt 我的 JPA 提供程序配置了驱动程序类名称 org.hsqldb.jdbcDriver
和 hibernate.dialect
=org.hibernate.dialect.HSQLDialect
。我还需要别的吗?
@Julien 在 Hibernate 站点提交错误报告。您报告的查询翻译包含 DELETE 语句中的连接,HSQLDB 不支持,SQL 标准也不允许。以上是关于HSQL 中无法识别交叉连接的主要内容,如果未能解决你的问题,请参考以下文章