我有使用我的数据库模式的Spring Boot应用程序。可以说我有一个非空架构,其表APPLICATION_USERS
定义如下:
create table AREA
(
name NVARCHAR2(36) not null,
id NUMBER not null
)
现在我想将FlyWay添加到我的应用程序中。我在应用程序属性flyway.baselineOnMigrate=true
中定义了开始初始Flyway部署的过程,在spring.jpa.hibernate.ddl-auto=validate
中定义了验证我的Enities Agains模式的过程,但是在启动应用程序时出现以下错误:
wrong column type encountered in column [name] in table [APPLICATION_USERS]; found [nvarchar2 (Types#OTHER)], but expecting [varchar2(255 char) (Types#VARCHAR)]
据我了解,它抱怨NVARCHAR2
,因为它期望varchar
我如何才能强制休眠方式将nvarchar2
接受为varchar
?
我知道我可以在实体属性上使用columnDefinition
,但这不是我的梦想解决方案,还有其他方法吗?
答案 0 :(得分:3)
我假设您正在使用Oracle数据库。
您必须使用“国有化”注释实体中的属性名称
@Nationalized
private String name;
您还可以注册自己的方言:
public class CustomOracleDialect extends Oracle10gDialect {
public CustomOracleDialect() {
super();
registerColumnType(Types.NVARCHAR, "nvarchar2($l)");
registerHibernateType(Types.NVARCHAR, StandardBasicTypes.STRING.getName());
}
}