Поколение DDL JPA/Hibernate; CHAR по сравнению с VARCHAR

У меня есть модель данных JPA/Hibernate, что я использую Быть в спящем режиме hbm2ddl инструмент для генерации базы данных DDL. У меня есть некоторые строки, которые должны быть CHAR и некоторыми, которые могут быть VARCHAR в базе данных. Я хочу минимизировать ручное редактирование DDL (я понимаю, что некоторые должны будут произойти).

Кто-либо знает, как я должен пойти об этом? Я понимаю, что могу сделать все Строки VARCHARS или СИМВОЛАМИ через взломанный диалект, но это не то, что является всегда соответствующим в базе данных.

Я хотел бы иметь возможность сделать это с аннотациями или aop, избегая текста определения пользовательского столбца в моих классах.

Спасибо.

10
задан Jeff Walker 18 February 2010 в 17:27
поделиться

2 ответа

Итак, я наконец обнаружил, что вы можете указать ограничение длины для типа на диалекте. Итак, я решил, что все, что меньше 10, должно быть char, а все, что больше, должно быть varchar:

registerColumnType( Types.VARCHAR, 10, "char($l)" );

Это не совсем то, что я хотел, но этого достаточно. Печально, что я не нашел этого раньше.

4
ответ дан 3 December 2019 в 20:41
поделиться

Добавьте аннотации к строкам, которые нужно сопоставить с CHAR в базе данных, с помощью @Column (columnDefinition = "CHAR (<ваш -char-length>) ") .

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

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