2016-08-05 13 views
0

こんにちは私は、私のHibernateドメインオブジェクトをDTOにマップするためにDozerを使用しようとしています。ソースマッピングは、Setを含むObjectです。 API変換を使用するとマッピングは正常に機能しますが、結果として得られるSetの順序は保持されません。結果セットの順序を保持する方法はありますか?ありがとう、Dozerマッピングがセットに設定

答えて

0

セットはデフォルトで注文をサポートしていません。あなたは実装としてLinkedHashSetを使ってみましたか?

私は最近、TreeSetを使って同様のことをしました。順序付けられていないセットを順序付きセットに変換しました。秘密は、マッピングの前にDTOに空のTreeSetを作成することです。

TreeSet<MyClass> mySet = new TreeSet<MyClass>(new MyComparator()); 
myDTO.setMyClasses(mySet); 
mapper.map(otherBean, myDTO); 

Dozerマッピング後、ターゲット(myDTO)の順序はコンパレータの順序と一致します。

ターゲットのDTOでSetの実装をLinkedHashSetにプリセットすると、元のセットの順序が維持されている可能性があります。そうでない場合は、ソースBeanの実装をLinkedHashSetに設定してみてください。

+0

DozerにLinkedHashSetを使用するように指示する方法について説明したこの質問の複製があります。http://stackoverflow.com/questions/10946350/how-to-tell-dozer-to-use-linkedhashset-collection-in - 宛先フィールド –

関連する問題