DbUnit HSQLDB - неверное имя схемы: C - PullRequest
3 голосов
/ 14 апреля 2011

При запуске теста со следующим запросом 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;

Кто-нибудь испытывал это раньше? Если «да», то в чем же проблема?

Обратите внимание, что если я изменю FROM country_ml as c на FROM country_ml as bob, то сообщение об ошибке изменится соответственно на invalid schema name: BOB.

1 Ответ

6 голосов
/ 14 апреля 2011

Проблема заключается в нестандартном синтаксисе OUTER JOIN в стиле Oracle, который специфичен для Oracle и не поддерживается другими диалектами SQL.

WHERE c.language(+) = l.id and c.country_ml2country(+) = ?

Вместо этого следует использовать следующий стандартный синтаксис:также поддерживает:

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
...