1

JPA と GAE を使用して、定義済みのインスタンス (エンティティ) を含むインスタンス (エンティティ) を永続化しようとしています。関係は次のように oneToOne です。

@Entity class Address{ ... @OneToOne(cascade = CascadeType.ALL)private City city;}

@Entity class City{...}

都市インスタンス (エンティティ) を作成し、それを永続化します。作成された都市インスタンスを含む Address インスタンスを作成しようとすると (UI から、ドロップダウン ボックスから選択されたため)、次の例外が発生しました。

javax.persistence.PersistenceException: Detected attempt to establish Address(no-id-yet) as the parent of City(20) but the entity identified by City(20) has already been persisted without a parent.  A parent cannot be established or changed once an object has been persisted.

これを実現するために使用する必要がある注釈はありますか?

前もって感謝します

4

1 に答える 1

0

問題は、DataStore がキーを格納する方法です。関係のタイプは親/子であるため、都市の場合、親として住所があります。これは、アドレスとして親を持つ複合キーを持つことを意味します。あなたの都市はすでに永続化されているため、キーを変更することはできません (作成後にキーを動的に変更することはできません。キーは不変です)。

OneToOne 参照はあなたに適していないと思います。なぜ別のオブジェクトが必要なのですか? 本当に必要な場合は、参照の整合性を維持しようとしないでください。NoSQL では非常に高価であり、多くの問題を引き起こす可能性があります。

于 2012-10-06T21:02:33.120 に答える