2

テキストファイル(1つの入札1つのファイル)ソースから入札のリストをロードしていて、それをデータベースに保存したいと思います。私はaddress_point、street、city、countryのテーブルを持っており、address_pointは多くのテーブル(組織、入札など)から参照されています。

図式

スクリプトがデータをロードしているときに、エラーで失敗した1つのトランザクションに同じアドレスを保存してみてください-キーが重複しています。

たとえば、スクリプトは新しい入札を追加し、入札は新しい会社が所有します。新しい入札と新しい会社の住所は同じで、これら2つのオブジェクトは1つのトランザクションに挿入され、両方に同じ住所が含まれています。この都市はすでにデータベースに保存されているため、最初にこの組織の都市を見つけて、見つかったオブジェクトに置き換えるか、プライマリを設定する必要があります。キーを押して同じ入札を行います。

次のスクリプト例では、データベースに保存されていない都市を含む新しい入札と新しい組織を追加します。都市がデータベースにあるかどうかを確認する必要があります。次のステップは、これら2つの都市を比較し、都市が等しい場合はそれらから1つのオブジェクトを作成して、キーの重複を回避する必要があることです。

しかし、入札、組織、ツアーなどの1つのトランザクションでポイントに対処するための3つ以上の参照があります。これらの2つの例は、国、地域などではなく、都市のみを対象としています。したがって、一連の条件を作成するのは面倒です。

この問題を解決するための最も効率的な方法は何ですか?isEquealとhashCodeを定義しましたが、これらのメソッドはセット専用であることを読みました。

4

1 に答える 1

0

isEqual と hashCode が必ずしもここで探しているものだとは思いません。 Comparableインターフェースを実装する方が適しているかもしれません。

上記の投稿から、同じ値を持つ新しい (まだ休止状態のセッションにアタッチされていない) オブジェクトを作成し、それらを保存しようとしているという印象を受けます。おそらく、保存する前にこれらの重複するケースを識別し、保存する前に会社と入札者の両方が同じ POJO を参照するようにすることができます。

于 2013-02-28T09:00:46.967 に答える