JPA / Hibernate DDL поколение;CHAR против VARCHAR - PullRequest
9 голосов
/ 18 февраля 2010

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

Кто-нибудь знает, как мне это сделать? Я понимаю, что могу сделать все строки VARCHARS или CHARS через взломанный диалект, но это не всегда уместно в базе данных.

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

Спасибо.

Ответы [ 2 ]

14 голосов
/ 18 февраля 2010

Аннотируйте строки, которые вы хотите отобразить в CHAR в базе данных с @Column(columnDefinition="CHAR(<your-char-length>)").

4 голосов
/ 19 февраля 2010

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

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

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

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