我有一个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)类型?
感谢。
答案 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)