Oracle Char type 和 Hibernate

2022-09-03 10:10:24

我有一个预言机表,其中包含几个列的char(n)类型。我使用休眠工具创建实体 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)类型?

谢谢。


答案 1

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

从本质上讲,您需要使休眠配置更加具体,因为它假设默认字符串映射到varchar2(30)。

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


答案 2

不起作用 - 未通过休眠架构验证:

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

确实有效,因为该属性告诉 Hibernate 不要默认为列类型,而是使用:columnDefinitionVARCHAR2CHAR

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

数据库中的列定义为:

ENABLED_FLAG CHAR(1 BYTE)

推荐