У меня проблема с моим пакетом ORMLite .Когда я генерировал схему для таблицы, я думал, что было бы неплохо избегать всех имен сущностей.Это защитит некоторые Java-классы или имена полей от того, чтобы быть зарезервированным словом SQL:
CREATE TABLE "footable" ("stuff" VARCHAR(255))
Теперь я добавляю поддержку «сырых» запросов, чтобы ORMLite мог помочь пользователям выполнять свои собственные запросы.Однако я обнаружил, что с Derby и Hsqldb имена сущностей не могут использоваться без экранирования .Например, следующий запрос:
SELECT * FROM footable
генерирует следующие ошибки:
Derby: ERROR 42X05: Table/View 'FOOTABLE' does not exist.
Hsqldb: Table not found in statement [select * from footable]
Работает нормально, если таблица выбора также экранирована как "footable"
.Другие базы данных, поддерживаемые ORMLite, прекрасно работают с выходом или без него: MySQL, Postgres, Microsoft SQL Server, H2 и Sqlite.
Есть ли лучшие способы избежать зарезервированных слов в Derby и Hsqldb?Другие идеи о том, как сделать это портативным способом?
Спасибо.