DbUnit HSQLDB - 模式名称无效:C

Unc*_*roh 3 oracle dbunit hsqldb

使用以下查询运行测试时,HSQLDB将表别名错误地作为模式.

SELECT c.country_ml2country as CTRY_PK, c.name as CTRY_NAME,
l.name as LANGUAGE_NAME, l.code as LANGUAGE_CODE
FROM country_ml as c, language as l
WHERE c.language(+) = l.id and c.country_ml2country(+) = ?
ORDER BY l.name ASC;
Run Code Online (Sandbox Code Playgroud)

有谁之前经历过这个吗?如果"是",那么修复是什么?

请注意,如果我更改FROM country_ml as cFROM country_ml as bob,则错误消息会相应更改为invalid schema name: BOB.

fre*_*edt 6

问题是非标准的Oracle样式的OUTER JOIN语法,该语法特定于Oracle,而不受其他SQL方言的支持.

WHERE c.language(+) = l.id and c.country_ml2country(+) = ?
Run Code Online (Sandbox Code Playgroud)

您应该使用以下标准语法,Oracle也支持这种语法:

SELECT c.country_ml2country as CTRY_PK, c.name as CTRY_NAME,
l.name as LANGUAGE_NAME, l.code as LANGUAGE_CODE
FROM country_ml as c RIGHT OUTER JOIN language as l
ON c.language = l.id and c.country_ml2country = ?
ORDER BY l.name ASC
Run Code Online (Sandbox Code Playgroud)