Oracle Char类型和Hibernate

我有一个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) 

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

谢谢。

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

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

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

不起作用 – Hibernate架构validation失败:

 @Column(name="ENABLED_FLAG", length=1) private String enabledFlag; 

是否有效,因为columnDefinition属性告诉Hibernate不要默认为VARCHAR2作为列类型,而是使用CHAR代替:

 @Column(name="ENABLED_FLAG", length=1, columnDefinition="CHAR") private String enabledFlag; 

数据库中的列定义为:

 ENABLED_FLAG CHAR(1 BYTE)