【问题标题】:constraint problems using apache derby and hbm2ddl使用 apache derby 和 hbm2ddl 的约束问题
【发布时间】:2011-01-18 18:31:42
【问题描述】:

我们在 Hibernate 3.3.x 中使用 Apache Derby 10.5.3.0_1 和 hbm2ddl

在嵌入式 derby 数据库上预加载 SQL 时出现以下约束错误。如果我从创建表 sql 中删除主键(id),它就能够创建表。不知道这里有什么问题。

create table user_flow (id integer not null generated always as identity unique, creation_date timestamp not null, name varchar(255), primary key (id));

[INFO] Constraints 'SQL100219175052781' and 'SQL100219175052780' have the same set of columns, which is not allowed.

【问题讨论】:

    标签: hibernate jpa hbm2ddl derby


    【解决方案1】:

    我相信这是DERBY-789,尚未修复。基本问题是列被声明为“唯一”和“主键”,这导致 Derby 尝试创建两个约束索引。由于“主键”已经暗示“唯一”,您可以省略“唯一”,我认为这比省略“主键”更好。

    【讨论】:

    • 看起来像一个已知的 derby 问题,但 SQL 是由 Hibernate 3.3.x hbm2ddl 工具生成的。不确定此工具是否有解决方法来避免为主键字段创建唯一性
    • 上述错误使得 derby 无法在 Hibernate 3.3.x 中使用,这是否意味着没有人将其用作开发平台?感谢任何解决此问题的指针或解决方法。
    • 您是否尝试过向 Hibernate 社区寻求建议?我知道有一种叫做“休眠的德比方言”的东西;也许您可以调整它,以便在这种情况下 Hibernate 不会生成此 SQL。
    • 我确实使用 org.hibernate.dialect.DerbyDialect 来生成 hbm2ddl。上述问题使最新版本的 Apache Derby 无法与 Hibernate 3.3.x 一起使用。我也会在hibernate论坛上问这个问题。
    • Joshua,请告诉我们您在 Hibernate 社区中的发现。同时,在 DERBY-789 上取得了一些进展,因此如果您能够将实验性 Derby 补丁程序整合到您的开发环境中,那么获得一些关于补丁程序是否朝着正确方向发展的反馈会很有趣。
    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2019-06-25
    • 2021-11-13
    相关资源
    最近更新 更多