Tengo aplicación de inicio de la primavera que utiliza mi esquema de base de datos. Digamos que tengo esquema no vacía con mesa APPLICATION_USERS
definida de la siguiente manera:
create table AREA
(
name NVARCHAR2(36) not null,
id NUMBER not null
)
Ahora quería añadir la vía de migración a mi solicitud. He definido en mis propiedades de la aplicación flyway.baselineOnMigrate=true
para iniciar el despliegue inicial de la vía migratoria y spring.jpa.hibernate.ddl-auto=validate
para validar mis Enities agains esquema, sin embargo, al iniciar la aplicación me sale error siguiente:
wrong column type encountered in column [name] in table [APPLICATION_USERS]; found [nvarchar2 (Types#OTHER)], but expecting [varchar2(255 char) (Types#VARCHAR)]
Por lo que yo entiendo, se queja NVARCHAR2
, ya que esperar varchar
cómo puedo forzar a Hibernate a aceptar nvarchar2
como varchar
?
yo se que puedo utilizar columnDefinition
en mis atributos de la entidad, sin embargo esto no es mi solución sueño, ¿hay alguna otra manera?
Asumo que está utilizando la base de datos de Oracle.
Usted tiene que anotar el nombre del atributo en su Entidad con Nationalized
@Nationalized
private String name;
También podría registrar su propio dialecto:
public class CustomOracleDialect extends Oracle10gDialect {
public CustomOracleDialect() {
super();
registerColumnType(Types.NVARCHAR, "nvarchar2($l)");
registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
}
}