Будьте в спящем режиме база данных определенные значения columnDefinition

проблема следующие: мы используем, в спящем режиме с аннотациями как Картопостроитель O/R.

Некоторые @Column аннотации похожи:

@Column(columnDefinition = "longblob", name = "binaryData", nullable = true)

или

@Column(columnDefinition = "mediumtext", name = "remark", nullable = true)

причем атрибуты columnDefinition mysql конкретны

на пост-ГРЭС, например, значения columnDefinition должны быть "bytea" и "varchar (999999)"

и на оракуле, вероятно, что-то еще.

Проблемы возникают в настоящее время во время Экспорта Схемы, например, при создании операторов DDL.

Возможные обходные решения, о которых я могу думать, - Взлом некоторый драйвер JDBC, который делает текстовую замену (например, longblob-> bytea) для операторов DDL. Это ужасно, но будет работать так или иначе - Использование в спящем режиме конфигурация XML вместо аннотаций. Это будет, вероятно, работать, но я предпочитаю аннотации

Кто-либо знает какие-либо альтернативы? Будьте в спящем режиме определенные обходные решения в порядке, например, если атрибут columnDefinition может содержать диалект определенные значения как

@Column(columnDefinition = "mysql->mediumtext, postgres->varchar(999999)", name = "remark", nullable = true)

Спасибо Holger

9
задан user1946784 22 December 2009 в 07:13
поделиться

2 ответа

Почему бы вам не использовать такие аннотации для диагностики базы данных:

  • @Lob (в свойстве байт[] или String)
  • @Column(length=90000) (в свойстве String)

и посмотреть, какие столбцы будут сгенерированы в базе данных. Скорее всего, они будут такого типа.

.
9
ответ дан 4 December 2019 в 15:20
поделиться

Некоторые идеи:

  • Используйте аннотации вообще, но перегружайте их из Xml в случае, если они специфичны для вашей базы данных. Тогда вы можете иметь один конфигурационный файл, специфичный для вашей базы данных.
  • Используйте java-константы в аннотациях (они должны быть константами времени компиляции, поэтому вы ограничены). Вы можете иметь несколько наборов констант Java, и указать на тот, в который вы хотите экспортировать. (Остерегайтесь, когда вы указываете на другую константу, вы должны все перекомпилировать.)
  • Я также использовал диалект для переключения некоторого кода в моем классе Configuration. Класс Configuration получает все данные (из аннотаций или xml), а затем может их обрабатывать.

    Например, я изменил символ конкатенации с '||' на Oracle на '+' на SqlServer.
    . Это удобно сделать во время выполнения :-)

4
ответ дан 4 December 2019 в 15:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: