1

リストコンパレーターについて質問があります。テーブルのあるページを持つ Web アプリケーションがあります。このテーブルのデータを編集したり、行を削除したりできます。データを編集すると標準コンパレータが正しく動作しますが、行を削除すると問題が発生します。問題は一般的です(私は思う)たとえば、1行を削除すると、javasが古いリストと現在のリストを比較すると、次のようになります。どのオブジェクトが削除されたかを知っていて、古いリストの最初のオブジェクトと新しいリストの 2 番目のオブジェクトを比較すると、オブジェクト全体が変更されましたが、それは正しくありません。

私の考えは、独自のリストコンパレーターを作成し、このコンパレーターで javas 比較メソッドが照合される前に、比較するオブジェクトが同じ ID を持っているかどうかを確認することでした。残念ながら、オブジェクト ID の取得に問題があります。私のコンパレータは次のようになります

public class ListComperator implements CustomPropertyComparator {

public ValueChange compare(List list1, List list2, GlobalId globalId, Property property) {

    for (Object o1 : list1) {

        for (Object o2 : list2) {
            if(o1.getId().equals(o2.getId()) )  {
                javers.compare(o1, o2);
            }
        }

    }}}

2番目のリスト「list2」には、IDなどのプロパティを取得できるオブジェクトがあります。最初のリスト「list1」は、いくつかの ValueObjectId を持つリストであり、オブジェクト o1 から ID を持つプロパティを取得する方法がわかりません。この情報を取得する方法はありますか、それとも完全に間違ったことをしているのかもしれません。助けてください。

4

1 に答える 1

0

これらのリストに ValueObjects が保存されていると思いますか? ValueObjects には識別子がないため、List が変更されたときに List インデックス間でどのように「移動」するかを検出する方法はありません。オブジェクトを識別する方法がなければ、カスタム コンパレータはあまり役に立ちません。リストに格納されているオブジェクトに何らかの識別子を追加し、それらをエンティティとしてマップすることをお勧めします (@Id アノテーションを使用)。

于 2016-01-09T19:01:20.163 に答える