Oracle Char 类型和 Hibernate

发布于 2024-09-15 05:33:24 字数 366 浏览 5 评论 0原文

我有一个 oracle 表,其中包含多列的 char(n) 类型。我使用 hibernate 工具创建实体对象,并使用此工具将 char 类型映射到 String 中。

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

Wrong column type in ARBOR.CMF for column CHG_WHO. Found: char, expected: varchar2(30 char)

What kind of java type must I use to map char(n) type in an entity ?

谢谢。

I have a oracle table which contains char(n) type for several columns. I use hibernate tools to create entities objets and this tool map char type in String.

But when I deploy my application, I get an error because Hibernate wait a varchar2 type and not a char type:

Wrong column type in ARBOR.CMF for column CHG_WHO. Found: char, expected: varchar2(30 char)

What kind of java type must I use to map char(n) type in an entity ?

Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

装迷糊 2024-09-22 05:33:24

这里有一些有用的信息 在此博客条目上。

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

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

There's some useful information here on this blog entry.

Essentially you need to make your hibernate configuration more specific, as it's assuming a default String mapping to varchar2(30).

You can try using the database-agnostic annotation of @Column(length=N) (where N is the actual length of your column in the database). If that doesn't work, try using the @Column(columnDefinition = "char") approach.

雪落纷纷 2024-09-22 05:33:24

不起作用 - 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)

Doesn't work - fails Hibernate schema validation:

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

Does work, since the columnDefinition attribute tells Hibernate not to default to VARCHAR2 as the column type, and to use CHAR instead:

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

The column in the database is defined as:

ENABLED_FLAG CHAR(1 BYTE)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文