0

以前、Hibernateに対してこの質問のバリエーションを尋ねました。しかし、私は現在Eclipselinkを使用していますが、それでも問題が発生します。それは非常に簡単です:

多対1の関係で都市名を含むアドレスオブジェクトを永続化する必要があります。住所を保持し、都市をカスケード保存できるようにしたいと思いますが、都市が一意である場合に限ります。私の理解では、これはJPAによって直接サポートされていませんか?考えられる解決策には、都市テーブルの一意のIDとして都市名を使用し、特定の都市の都市テーブルをクエリして、保存する前にそのオブジェクトをアドレスに追加することが含まれます。私は確かにこれがアプローチであることを示唆しているように見えるいくつかのStackOverflowの質問/回答を見てきました(JPAカスケードは持続します-多対1

ここで何かが足りませんか?代替/より良いアプローチはありますか?

4

1 に答える 1

1

はい、解決策は、データベースから都市を取得し、存在しない場合は作成して、住所に設定することです。

それを回避する方法はありません。ただし、都市名を主キーにする必要はありません。自動生成された機能しない代理キーをPKとして使用し、都市の名前に一意の制約を追加します。これにより、少なくとも、都市名を参照している1000のアドレスを更新しなくても、都市名のタイプミスを修正できます。

于 2012-10-28T22:30:10.010 に答える