Я только что начал использовать ORMLite и использовал дома, чтобы экспериментировать с MySQL. Теперь я решил попробовать использовать его в Oracle, но заметил проблему с чувствительностью к регистру имен столбцов.ORMLite и Oracle - имена столбцов, чувствительных к регистру
При использовании TableUtils.createTableIfNotExists()
он генерирует операторы CREATE, которые обертывают имена таблиц и столбцов в двойных кавычках. Например:
CREATE TABLE "T_SUBURB" ("ID" NUMERIC, "Описание" VARCHAR2 (255) NOT NULL, "gnaf" VARCHAR2 (255), первичный ключ ("ID"))
Это означает, что когда я пытаюсь запросить базу данных в Oracle SQL Developer, мне нужно использовать двойные кавычки, чтобы указать имена таблиц и столбцов. Это не похоже на использование MySQL.
Должен признаться, что я новичок в SQL, но при попытке запросить их не представляется естественным обертывать каждое имя таблицы или столбца в двойных кавычках. Рассматривая реализацию OracleDatabaseType, кажется, что в этом примере имя сущности намеренно двойным образом цитируется.
Кто-нибудь знает, как отключить это поведение?
В настоящее время я выполняю версию 4.43 от maven-central и Oracle 11g. Приветствия.
Hi Grey, Thankyou для вашего ответа, вы правы - имена таблиц в верхнем регистре, я просто записывал пример из памяти. Я комментирую создание недействительного SQL, однако ORMLite - это первый ORM, который я видел, который не сбой при создании, потому что используется зарезервированное слово или просто сбой при попытке использовать SQL. Мне интересно, может ли быть опция, которая позволяет мне указать, следует ли использовать экранирование имен или нет (по умолчанию true соответствует обратной совместимости). Таким образом разработчик может выбрать, хотят ли они эту функциональность или нет. – Aidos
Уверяю вас, что спящий режим и другие современные ОРМ делают то же самое. Проблема в том, что вы не хотите использовать прописные буквы или мне что-то не хватает @Aidos? – Gray