問題タブ [dozer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - dozer Boolean プロパティのマッピング
isProperty()
プロパティのアクセサがではなくとして定義されている場合、Dozer はブール プロパティをマップしないようですgetProperty()
。
次の groovy スクリプトは、この問題を示しています。
最終行のアサーションは失敗します。ただし、名前を変更ProductDto.isFoo()
するProductDto.getFoo()
と合格します。
Dozer マッピング ファイルに設定できるフラグ/オプションはありますか?これにより、ブール値プロパティにis
またはget
アクセサーを使用するように指示されますか? 別の方法として、すべてのブール プロパティにカスタム ルールを追加することもできますが、これはあまり魅力的ではありません。
上記の例は Groovy で書かれていますが、同等の Java コードが同じ動作を示さないと信じる理由はありません。
これらの DTO は JAXB (ブール値の「get」アクセサーではなく「is」アクセサーを生成する) によって生成されるため、アクセサーの名前を変更することはできません。Dozer 5.3.2 を使用しています。
gwt - GWT + エンティティー + JPA + DTO + Dozer
エンティティ Bean (JPA 2) の DTO へのマッピングを処理する最良の方法は何だろうと思っています。GWT ではエンティティ Bean を「直接」使用できないため、代わりに DTO を処理する必要があります。
さまざまな関係を持つエンティティがいくつかあります (OneToOne、OneToMany、ManyToMany と結合テーブルなど)。最初に、次のようなメソッドを持つクラス MyEntityTransform.java の助けを借りて、すべてのエンティティを手動で DTO に変換し始めました。
その他のメソッドは、persistent2BeanCollection(...)、persistent2BeanMap(...)、bean2Persistent(...)、bean2PersistentCollection(...) です。
コレクションを処理するとき、特に同じエンティティが他のいくつかのエンティティへの参照を持っている場合、これは面倒な作業になります。
エンティティと DTO 間のマッピングを処理するために DOZER フレームワークを使用することを考えていました。ここで言及されています:http://code.google.com/intl/fr/webtoolkit/articles/using_gwt_with_hibernate.html
ただし、さまざまな JPA マッピング (たとえば、多くの場合) をどの程度うまく処理できるか、および dozer-bean-mappings.xml ファイルで構成するのにどれだけの作業が必要かはわかりません。また、このフレームワークはリフレクションを集中的に使用してマッピング操作を実行していると思います。このようなアプローチは、たとえば MyEntityTransform.java クラスでメソッドを使用する場合など、「手で」実行されるマッピングよりもはるかに遅くなります。
何を指示してるんですか ?GWT で JPA エンティティを処理した皆さんの経験に興味があります。
ありがとう。
セリーニオ
java - Dozer - 2 つのソース クラスから共通の宛先クラスへのマッピング
これが私のシナリオです。SourceClassA、SourceClassB、および DestClass の 3 つの単純なクラスがあります。次の方法で、マッピング XML 内に定義された 2 つのカスタム コンバーターがあります。
この種のマッピングはまったく有効ですか? カスタム コンバーターを使用して、2 つの異なるソース クラスから同じ宛先クラスにマップできますか?
私の場合、これを試したところ、Bean マッピング中に Dozer によって ClassBConverter がまったく呼び出されませんでした。何かご意見は ?
list - ジェネリック リストの Dozer マッピング
私は次のような ListWrapper を持っています
そして豆のような
そして別の豆のような
ここでのアイデアは、リストに AccountBo タイプの Bean を入力し、Dozer を使用してリストをマップしてから、AccountDto Bean を入力することです。
しかし - ターゲット リスト内の Bean のタイプは AccountBo です ....
AccountDto のリストを取得するにはどうすればよいですか?
mapping - カスタムコンバーターを使用したドーザーディーププロパティマッピング
次の例のように、アプリケーションに(ドメインオブジェクトからDTOへ、およびその逆の)詳細なプロパティマッピングがあります。
DozerがドメインをDTOに変換すると、にマップemployee.id
されます。これで問題ありませんemployeeId
。
DozerがDTOをドメインに変換するemployeeId
と、id=employeeIdを持つ新しいEmployeeインスタンスにマップされます。
この深いプロパティマッピングのロジックを作成したいのですが、解決策がわかりません。実装CustomConverter
(または拡張DozerConverter
)しようとしましたが、Dozerはソースクラスと宛先クラスとして整数型を渡します(結果として整数を期待します)。
編集:より正確に言えば、私が必要としているのはemployee
、ドメインでDTOが0の null
場合にマップすることです。employeeId
これは可能ですか?
何かアドバイス?
回答に応じて編集:フィールドレベルのカスタムコンバーターの問題を解決します。前述のマッピングの代わりに、今私はこのようなものを持っています...
ManyToOneIdMapperで私は持っています...
custom-converter-param
ドメインオブジェクトのidフィールドの名前です。その名前で、コンバーターでsetterメソッドまたはgetterメソッドを呼び出すだけです。おそらく、それは最も幸せな解決策ではありませんが、私の問題のシナリオでは機能します。
java - リストをマップするにはどうすればよいですかリストへ>ドーザーで?
オブジェクト Bar への参照のリストを保持するオブジェクト Foo があるとします。
Dozer を使用して、Bar から java.util.HashMap へのマッピングが自明であると仮定すると、Foo のインスタンスを java.util.HashMap のインスタンスにマップして、参照される Bar のインスタンスが java.util.HashMap にもマップされるようにするにはどうすればよいですか? つまり、マッピングの結果が、ArrayList> のインスタンスを保持するキー「barList」を持つ HashMap になるようにします。このリストの各 HashMap は、Bar から HashMap へのマッピングである必要があります。
たとえば、Foo がリストではなく Bar への単一の参照を保持している場合、次のようにします。
これにより、次のようなハッシュマップが生成されます (JSON オブジェクトを使用して HashMap を表します)。
しかし、Bar への参照のリストを使用して HashMap への変換を表現する方法を知りたいので、次のようにします。
カスタム マッパーを使用しない回答が優先されますが、これがこの動作を実現する唯一の方法であるかどうかは理解しています。
java - BeanUtils.copyProperties() 対 DozerBeanMapper.map()
BeanUtils.copyProperties()
すべてのフィールドをマップする必要があり、フィールド名が同じである場合、Bean から dto へのマッピングに使用しています。DozerBeanMapper.map()
しかし、この状況で BeanUtils を使用することを考えていなかったので、ソース Bean のすべてのフィールドを宛先 dto にマップする必要はありません 。
したがって、両方の方法に独自の機能があると思いますが、両者の間に類似点はありません。私は正しいですか?私を案内してください。
spring - dozer.propertiesの場所を指定する方法は?
Spring3.0.xでDozerを使用しています。これが私のマッパーBeanの定義です:
dozer.propertiesファイルをsrc/main / resources / conf / app/dozer.propertiesに置きたい。
カスタムdozer.propertiesの場所を指定するにはどうすればよいですか?
spring - Spring 依存性注入を使用したカスタム コンバーター
トップレベルの型を別の型に変換するカスタム コンバーターを Dozer で定義する方法はありますか?それはそれ自体が Spring Bean であり、その依存関係を注入することができますか?
ドーザーのドキュメントでは、次の XML 定義を追加することを提案しています。
残念ながら、これにより Dozer がorg.dozer.converters.TestCustomConverter
直接インスタンス化され、依存性注入がスキップされます。代わりにSpring Beanを参照する方法はありますか?