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