ActiveJDBC и заключенные в кавычки идентификаторы
Я пытаюсь использовать ActiveJDBC с устаревшей БД, где таблицы и столбцы часто содержат дефисы в именах. Это работает хорошо для SELECT
как я могу процитировать идентификатор (например, Model.where("\"stupid-name\" = ?", 1)
). Проблема возникает с INSERT/UPDATE как SQL, сгенерированный DefaultDialect
не цитирует идентификаторы.
Я думаю о реализации пользовательского диалекта для этого типа БД (это Progress OpenEdge BTW), но сначала у меня есть пара вопросов:
- будет ли приветствоваться вклад диалекта для такой БД (с закрытым исходным кодом, требуется лицензия AFAICT) в последующем ActiveJDBC?
- если нет, могу ли я использовать внешне поддерживаемый диалект?
- Было бы полезно изменить использование идентификаторов в кавычках для других типов БД?
1 ответ
Есть способ определить имена таблиц с помощью обратных тиков:
@Table("`PEOPLE`")
public class Person(){}
Он был протестирован и работает с несколькими базами данных. Имена столбцов поступают из БД, поэтому они используются для генерации запросов обратно в БД, поскольку ActiveJDBC является сквозной средой: http://javalite.io/pass_through_framework.
Должно быть легко внести изменения в структуру, чтобы заставить определенный диалект, но мы предпочли бы базы данных с открытым исходным кодом. Если у вас закрытый источник, вы бы поддержали этот диалект.