Мне нужно сделать проект с использованием JPA + Hibernate, в котором я использую 3 диалекта: MySQL5InnoDBDialect, MSSQL2012Dialect и Oracle12cDialect.
Сейчас у меня есть спецификация, в которой говорится, что для некоторого столбца:
База данных Oracle, мне нужно использовать тип данных NVARCHAR2 (LENGTH)
База данных MySql, мне нужно использовать тип данных VARCHAR (LENGTH)
База данных MSSQL, мне нужно использовать тип данных NVARCHAR (LENGTH)
... и вот моя проблема ..
Если я использую:
@ Column (name = "columnName" length = 255)
private String columnName;
hibernate генерирует varchar (255), и это хорошо только для MySQL
Если я использую:
@ Column (name = "columnName", columnDefinition = "nvarchar2 (255)")
private String columnName;
в MySQL это невозможно, я получаю сообщение об ошибке из-за columnDefinition, но в oracle все в порядке
Я пытался настроить создание диалекта MySQL
открытый класс CustomMySQL5InnoDBDialect extends MySQL5InnoDBDialect {
public CustomMySQL5InnoDBDialect() {
super();
registerColumnType(Types.NVARCHAR, "nvarchar2($l)");//$l not $1
registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
}
}
и предоставление этого класса в конфигурации гибернации для диалекта MySQL.
У меня та же проблема в MySQL, если я использую свойство columnDefinition.
Можете ли вы помочь с этой проблемой, пожалуйста?