問題タブ [mapstruct]
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.
hibernate - Mapstruct で遅延読み込みを管理するには?
データベースから遅延ロードされたオブジェクトに関連する問題に対処しています。
以下のエンティティがあるとしましょう。
そして、Dtoは
では、怠惰なユーザーを取得しているため、EJBException を発生させずにすべてのユーザーを取得するための最良の方法はどれでしょうか?
編集:解決策
次のデータモデルがあるとしましょう
- アドレスなしのクエリ、例外: モデルから DTO にマッピングする場合、マッピングを試みます
addresses
が、(hibernate またはその他のフレームワークを介して) 遅延ロードされるため、例外が発生します。
さらにaddresses
、 @Mehmet Bektaş のように、マップされている from を無視できます。ただし、 を定義する必要はありませんsource
。オプションです。
- リレーションシップの取得: これが方法です。
join
クエリに a を追加するaddresses
と、Mapstruct が残りを行います。
java - MapStruct のカスタム コンポーネント モデルを作成するには?
MapStructは、コンバーターを作成するためのコンポーネント モデルを提供します。ただし、これらのコンバーターは独立した Spring コンポーネントのように生成されます。それらをConversionServiceに「入れる」方法はありますか?
Spring コンバーターを変換サービスに追加する例を次に示します。CoversionServiceAwareConverter
スーパー クラスとして使用するカスタム コンポーネント モデルを作成する方法はありますか?
mapstruct - オブジェクトをリストに変換する Mapstruct
以下のように、オブジェクトを別のオブジェクトのリストにマップする必要があります
パブリック リスト マップ(ClassA A){
.... ClassA から C1 と C2 を設定するロジック C1 と C2 をリストに追加
リストを返します。
}
生成された Impl クラスで、「シンボル ClassB が見つかりません」というコンパイル エラーが発生します。クラス「ClassB」は、生成された impl クラスにインポートされません。これを解決するのを手伝ってください。
java - MapStruct で変換するときに循環参照を防止する
今日、MapStruct を使用して、プロジェクトのモデルから DTO へのコンバーターを作成し始めました。循環参照が自動的に処理されるかどうか疑問に思っていましたが、そうではないことが判明しました。
これは、テスト用に作成したコンバーターです。
これはテストです:
Notifica、Avvisinotifica、およびそれぞれのモデルは、セッターとゲッターを備えた単純な POJO であるため、コードを投稿する必要はないと思います (Notifica は Corrispondenza を拡張します)。
このコードは無限サイクルに入りますが、ここではそれほど驚くべきことではありません (ただし、これらの状況を処理できることを望んでいました)。そして、それを手動で処理するエレガントな方法を見つけることができると思いますが(参照オブジェクトを挿入するためにメソッドを使用することを考えていまし@MappingTarget
た)、循環参照を自動的に処理する方法をMapStructに伝える方法があるかどうか疑問に思っていました.
java - mapstruct を使用してパラメーターを使用してコレクションをマップする
特定のオブジェクトを mapstruct でマップするには、追加のパラメーターを必要とするカスタムの後処理が必要です。
これはうまくいきます。このマッパーに次のメソッドを追加すると、問題が発生します。
このパラメーター (userLanguage) も渡す必要がありますが、この場合、mapstruct は「壊れている」ようです: この部分に対して次のコードを生成します (当然、コンパイル エラーが発生します)。
(すべてのマッピングメソッドから)削除すると、mapListメソッドが正しく生成されるため、パラメーターに関連していると確信しています。
この場合、カスタム パラメータを許可するにはどうすればよいですか?
java - Mapstruct 変換 抽象エンティティから dtos へのリスト
抽象エンティティのリストを mapstruct でマップする必要がありますが、次のエラー メッセージが表示されるため、その方法がわかりません。
このメソッドの実装は生成できません。ソース要素タイプをターゲット要素タイプにマッピングするためのメソッドも暗黙的な変換も見つかりませんでした。
java - Weblogic 12c - Mapstruct - 1.0.0.Final - ClassNotFoundException: 実装が見つかりません
しばらくの間 mapstruct を使用していますが、Web サービスの 1 つをデプロイしようとしているときに次の問題が見つかりました。
展開されている WAR を確認すると、同じ bar.foo.mapper フォルダーに MyMapper.class と MyMapperImpl.class があり、正常に動作する他のサービスと同様です。
POM では、公式ドキュメントに記載されているセットアップに従いました。
私はすでに @gunnar の回答をここで読んでいますが、私の場合、実装は WAR のインターフェイスの横にあります。
何か案は?
ありがとう!
更新: バージョン 1.1.0.Beta1 で試してみたところ、同じ結果が得られました
UPDATE-2 : これは、スローされた例外のログです。
デバッグ中に、ここで例外がスローされます。
...クラスがインターフェースの横にあるにもかかわらず、classLoader.loadClassがbar.foo.mapper.MyMapperImplを見つけられないためです。
java - MapStruct は、自動的にマップ解除されたプロパティを無視します
コード内のさまざまなビジネス ユース ケース間で共有される大きなモデル (50 を超えるフィールド) で MapStruct を使用しています。エントリ ポイントに応じて、マップされるプロパティとマップされないプロパティがあります。プロジェクトをビルドすると、常に「警告: マップされていないターゲット プロパティ」というメッセージが表示されます。
セマンティックを使用してフィールドを無視するようにmapstructに指示できることを調査し、見ました
問題は、非常に多くのフィールドを持つオブジェクトを考えると、各マッパー クラスの各プロパティを無視するには多くのコードが必要になることです。また、ログにこの警告を表示したくありません。このメッセージを回避して、マップされていないものを無視するように mapstruct に指示する方法はありますか?