我们在 dao 测试中使用 hsqdb-2.2.9。hsqldb 通过设置与 oracle(生产中)兼容,SET DATABASE SQL SYNTAX ORA TRUE;
我们使用 ibatis sql map。
当 sql 包含表别名时,它会失败,例如select a.name, b.code form t_a a, t_b b where a.id = b.a_id
,报告unexpected token a
。我们尝试在表和表别名之间添加“as”,它也不起作用。我错过了什么吗?
呃……我想我已经找到了问题…………我自己的。我突然想到我使用'do'(表名是t_delivery_order)作为表别名,它恰好是hsqldb(或sql)中的关键字。只需将 'do' 替换为 'd',它是固定的。谢谢大家
是的,HSQLDB 支持表别名。
如果您使用您报告的确切查询,您将获得:
unexpected token: T_A
如果您按照 a_horse_with_no_name 的注释更正查询,它应该可以工作。如果其中一个表不存在,您将获得:
user lacks privilege or object not found: T_A
顺便说一句,尝试使用最新的 2.3.0 快照 jar 以获得更好的 Oracle 兼容性测试。您可以从网站的支持页面找到它。