0

私は現在、多対一の関係を使用する必要があるプロジェクトに取り組んでいます。DB 内の既存のテーブルから親を取得し、新しい子オブジェクトにマップしたいと考えています。しかし、これを行うたびに失敗し、代わりに親をもう一度作成しようとします。変数宣言は次のとおりです。

@Entity @Table (name= "children")
public class Child implements Serializable{
@ManyToOne (fetch = FetchType.EAGER, cascade = {CascadeType.PERSIST})
@JoinColumn (name = "parent_id",referencedColumnName = "id")
private Parent parent;
}

新しい子レコードを作成するたびに、データベースから取得した既存の親のデータを使用して新しい親を作成しようとし、このエラーが発生します:

duplicate key value violates unique constraint "parents_parent_name_key"
Detail: Key (parent_name)=(Jimmy) already exists.

Batch entry 0 insert into parents(parent_name, id) values ('Jimmy', '13')     was
aborted.  Call getNextException to see the cause.

次に、これをやり直そうとすると、別のエラーが発生します。

org.hibernate.PersistentObjectException: detached entity passed to persist:
com.house.entity.Parent

ありがとうございます

4

1 に答える 1

0

私はそれを修正することができました。問題は、2 つのテーブルと他のテーブルに 1 つのシーケンスを使用したことです。エンティティ全体に複数の関係があり、それら全体のデータを 1 つのインスタンスで保持したい場合は、これを行わないでください。私がそれを変更したとき、それはうまくいきました。

于 2013-07-08T10:52:07.260 に答える