【问题标题】:Hibernate 3.5 @OneToMany annotation and PostgreSQLHibernate 3.5 @OneToMany 注解和 PostgreSQL
【发布时间】:2012-07-19 13:33:52
【问题描述】:

我有一个名为 article 的表格,其中包含按以下顺序排列的以下列:

文章表:

1)creator_id 2)article_id(pk) 3).....

article_page 表:

1)article_page_id(pk) 2)article_page_number 3)article_id(fk --> 文章表)。

我正在使用单向或双向休眠注释映射,当我尝试保存具有许多调用 save() 的 article_page 对象的文章对象时会出现以下问题:

文章被插入到表article中,并生成了一个新的article_id。但是当尝试在 article_page 表中插入行时,hibernate 会尝试使用表 article 中的 creator_id 而不是 article_id。

我已经仔细检查了我的 java 注释类,我似乎没有发现任何错误。我想知道 creator_id 是否在 PostgreSQL 文章表的位置 1 导致这种奇怪的行为。还是别的什么?

【问题讨论】:

  • 顺序不重要,你的注释肯定有问题——你能发布一些你的代码吗?
  • 我尝试了更多使用纯 JDBC 而不是休眠。 getGeneratedKeys() 调用返回一个结果集,其中 getInt(1) 内容不是我的主键列 (article_id),而是列 creator_id。对我来说听起来像是一个 postgresql 问题?

标签: hibernate postgresql jpa entity-relationship


【解决方案1】:

好吧,似乎我的表格文章的所有列都被认为是自动生成的,因此它们都在 getGeneratedKeys() 调用中返回。表 article 中列的存在顺序是您可以从 GeneratedKeys 中检索它们的顺序。在我们的例子中,我的主键是通过 getInt(2) 返回的,因为它是第二个。

Hibernate 3.5 似乎将第一列作为主键检索。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-22
    • 2011-10-04
    • 1970-01-01
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多