Oracle Char类型和Hibernate

Kiv*_*iva 14 java hibernate oracle10g

我有一个oracle表,其中包含几列的char(n)类型.我使用hibernate工具创建实体objets,并使用此工具在String中映射char类型.

但是当我部署我的应用程序时,我收到一个错误,因为Hibernate等待varchar2类型而不是char类型:

Wrong column type in ARBOR.CMF for column CHG_WHO. Found: char, expected: varchar2(30 char)
Run Code Online (Sandbox Code Playgroud)

我必须使用什么样的java类型来映射实体中的char(n)类型?

谢谢.

sta*_*ark 23

这篇博客文章中有一些有用的信息.

基本上你需要使你的hibernate配置更具体,因为它假设一个默认的String映射到varchar2(30).

您可以尝试使用@Column的数据库无关注释(长度= N)(其中N是数据库中列的实际长度).如果这不起作用,请尝试使用@Column(columnDefinition ="char")方法.


Jim*_*ugh 7

不起作用-无法通过Hibernate模式验证:

@Column(name="ENABLED_FLAG", length=1)
private String enabledFlag;
Run Code Online (Sandbox Code Playgroud)

起作用,因为该columnDefinition属性告诉Hibernate不要将default缺省设置VARCHAR2为列类型,而应使用CHAR

@Column(name="ENABLED_FLAG", length=1, columnDefinition="CHAR")
private String enabledFlag;
Run Code Online (Sandbox Code Playgroud)

数据库中的列定义为:

ENABLED_FLAG CHAR(1 BYTE)
Run Code Online (Sandbox Code Playgroud)