ActiveJDBC и заключенные в кавычки идентификаторы

Я пытаюсь использовать ActiveJDBC с устаревшей БД, где таблицы и столбцы часто содержат дефисы в именах. Это работает хорошо для SELECTкак я могу процитировать идентификатор (например, Model.where("\"stupid-name\" = ?", 1)). Проблема возникает с INSERT/UPDATE как SQL, сгенерированный DefaultDialect не цитирует идентификаторы.

Я думаю о реализации пользовательского диалекта для этого типа БД (это Progress OpenEdge BTW), но сначала у меня есть пара вопросов:

  1. будет ли приветствоваться вклад диалекта для такой БД (с закрытым исходным кодом, требуется лицензия AFAICT) в последующем ActiveJDBC?
  2. если нет, могу ли я использовать внешне поддерживаемый диалект?
  3. Было бы полезно изменить использование идентификаторов в кавычках для других типов БД?

1 ответ

Есть способ определить имена таблиц с помощью обратных тиков:

@Table("`PEOPLE`") public class Person(){}

Он был протестирован и работает с несколькими базами данных. Имена столбцов поступают из БД, поэтому они используются для генерации запросов обратно в БД, поскольку ActiveJDBC является сквозной средой: http://javalite.io/pass_through_framework.

Должно быть легко внести изменения в структуру, чтобы заставить определенный диалект, но мы предпочли бы базы данных с открытым исходным кодом. Если у вас закрытый источник, вы бы поддержали этот диалект.

Другие вопросы по тегам