У меня есть модель данных JPA/Hibernate, что я использую Быть в спящем режиме hbm2ddl инструмент для генерации базы данных DDL. У меня есть некоторые строки, которые должны быть CHAR и некоторыми, которые могут быть VARCHAR в базе данных. Я хочу минимизировать ручное редактирование DDL (я понимаю, что некоторые должны будут произойти).
Кто-либо знает, как я должен пойти об этом? Я понимаю, что могу сделать все Строки VARCHARS или СИМВОЛАМИ через взломанный диалект, но это не то, что является всегда соответствующим в базе данных.
Я хотел бы иметь возможность сделать это с аннотациями или aop, избегая текста определения пользовательского столбца в моих классах.
Спасибо.
Итак, я наконец обнаружил, что вы можете указать ограничение длины для типа на диалекте. Итак, я решил, что все, что меньше 10, должно быть char, а все, что больше, должно быть varchar:
registerColumnType( Types.VARCHAR, 10, "char($l)" );
Это не совсем то, что я хотел, но этого достаточно. Печально, что я не нашел этого раньше.
Добавьте аннотации к строкам, которые нужно сопоставить с CHAR в базе данных, с помощью
@Column (columnDefinition = "CHAR (<ваш -char-length>) ")
.