-1

次の順序で次の列を含む article というテーブルがあります。

記事表:

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

article_page テーブル:

1)article_page_id(pk) 2)article_page_number 3)article_id(fk --> 記事テーブル)。

一方向または双方向の hibernate アノテーション マッピングを使用しており、save() を呼び出す article_page オブジェクトが多数ある記事オブジェクトを保存しようとすると、次の問題が発生します。

記事がテーブル article に挿入され、新しい article_id が生成されます。しかし、article_page テーブルに行を挿入しようとすると、hibernate は article_id の代わりにテーブル article からの Creator_id を使用しようとします。

Java アノテーション付きクラスを再確認しましたが、間違いはないようです。Creator_id が PostgreSQL 記事テーブルの位置 1 にあると、この奇妙な動作が発生するのではないかと考えていました。それとも別のものですか?

4

1 に答える 1

0

私のテーブル アーティクルのすべての列は自動生成されていると見なされるため、すべて getGeneratedKeys() 呼び出しで返されます。テーブル アーティクルに列が存在する順序は、GeneratedKeys から列を取得できる順序です。私たちの場合、私の主キーは getInt(2) を介して返されます。

Hibernate 3.5 は、最初の列を主キーとして取得するようです。

于 2012-07-20T08:32:18.123 に答える