Oracle Char类型和Hibernate

时间:2010-08-20 10:06:23

标签: 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)

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

感谢。

2 个答案:

答案 0 :(得分:22)

这里有一些有用的信息on this blog entry.

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

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

答案 1 :(得分:7)

不起作用 - Hibernate架构验证失败:

@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)