テキストファイル(1つの入札1つのファイル)ソースから入札のリストをロードしていて、それをデータベースに保存したいと思います。私はaddress_point、street、city、countryのテーブルを持っており、address_pointは多くのテーブル(組織、入札など)から参照されています。
スクリプトがデータをロードしているときに、エラーで失敗した1つのトランザクションに同じアドレスを保存してみてください-キーが重複しています。
たとえば、スクリプトは新しい入札を追加し、入札は新しい会社が所有します。新しい入札と新しい会社の住所は同じで、これら2つのオブジェクトは1つのトランザクションに挿入され、両方に同じ住所が含まれています。この都市はすでにデータベースに保存されているため、最初にこの組織の都市を見つけて、見つかったオブジェクトに置き換えるか、プライマリを設定する必要があります。キーを押して同じ入札を行います。
次のスクリプト例では、データベースに保存されていない都市を含む新しい入札と新しい組織を追加します。都市がデータベースにあるかどうかを確認する必要があります。次のステップは、これら2つの都市を比較し、都市が等しい場合はそれらから1つのオブジェクトを作成して、キーの重複を回避する必要があることです。
しかし、入札、組織、ツアーなどの1つのトランザクションでポイントに対処するための3つ以上の参照があります。これらの2つの例は、国、地域などではなく、都市のみを対象としています。したがって、一連の条件を作成するのは面倒です。
この問題を解決するための最も効率的な方法は何ですか?isEquealとhashCodeを定義しましたが、これらのメソッドはセット専用であることを読みました。