問題タブ [orika]
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 - Orika - java.lang.NoClassDefFoundError: javassist/CannotCompileException
私は次のことをしており、報酬として得ています:
誰かが理由を知っていますか?
java - ModelMapper を使用した PropertyMap のカスケード
6 つの POJO クラス (3 つの DAO と 3 つの DTO) を考えてみましょう。
DAO: "A"、"B"、"C"
DTO: "One"、"Two"、"Three"
「A」には「B」のリストが含まれています。「B」には「C」のリストが含まれています。
「One」には「Two」のリストが含まれます。"Two" には "Three" のリストが含まれています。
「A」は「A2One」を介して「One」にマップされます。「B」は「B2Two」を介して「Two」にマップされます。「C」は「C2Three」を介して Three にマップされます。
B2Two と C2Three は、A2One と非常によく似たコードを持っています。
だからここに私の質問があります:
現在、「A」と「One」に含まれるリスト間の変換は、カスタム コンバーターを介して行われます (動作します) が、B2Two が実行するはずの同じ操作を繰り返しています (Bs を Twos にマップします)。
プロパティ マップが行っていることを単に再現するコンバーターを作成することなく、リストをマップするときにプロパティ マップ (A2One -> B2Two -> C2Three) をカスケードする方法はありますか?
代替案 1List, List
:正しいプロパティ/型マップに転送するジェネリックを使用してカスタム TypeMap を作成します。
代替案 2 : A2One では、リストに以下を使用します。
ListProvider が AbstractProvider を拡張し、新しい ArrayList() を返す場所
選択肢 3 : ???
何か案は?より複雑なマッピングの問題に関するドキュメントは Web サイトで非常に貧弱であり、必ずしも代替フレームワークを探しているわけではありません。代替案が提供される場合、簡単なリファクタリングを可能にする必要があります (したがって、Dozer と Orika は基本的に除外されます)。
前もって感謝します
更新: 執筆時点では、ModelMapper は基本的に機能せず、実際にはリストやマッピングのカスケードをサポートしていないため、リストにすることもできるすべてのオブジェクトに対してマップとコンバーターを作成する必要があります。
さらに、Orika には MapperBase を拡張することで、リファクタリングしやすいマッピングがあることがわかりました。さらに、Orika は個々の Bean と Bean のリストのマッピングを透過的に処理できます (両方の状況で単一のマッピング ルールを使用)。
更新 2 : Orika では、CustomMapper を使用してコレクションの双方向の深いネストされたマッピングを行うことができます。これにより、双方向マッピングの実装を作成し、それらを他のカスタム マッパーにカスケードできます。A2One は B2Two のインスタンスを保持し、「A」に含まれる「B」をマッピングするときにそれを透過的に使用します。
java - Orika マッパーの例外
Hibernate エンティティを Web サービス エンティティにマッピングするために Orika マッパーを使用します。完璧に機能しますが、次の例外がスローされることがあります。解決方法がわかりません。私はトムキャットを使っています。
java - Orika - リストへのオブジェクトのマッピング (1 対多のマッピング)
私は次の2つのクラスを持っています
A を B のコレクションにマップすることは可能ですか (A.collection.field は B.field のコレクションにマップする必要があります)。
カスタム コンバーターを使用しようとしましたが、java.lang.VerifyError: を管理するだけで済みます。
結果:
orika - Spring Data Commons の代わりに Orika を使用する
Spring Data Commons を使用して PersistentEntity/PeristentProperty (基本的には型情報とプロパティのゲッターおよびセッター) を構築し、ネイティブ ストアから Java にロールする EntityConverter を使用する Neo4j のようないくつかの Spring Data プロジェクトがあります。これは、SDN (Spring Data Neo4j) の機能に加えて、BeanWrapper コンバーターをバンドルして、特定のプロパティ タイプが Neo4j データ構造に許可されるようにすることです。
基本的に、Java Bean には @NodeEntity アノテーションが付けられ、関係オブジェクトによって相互にリンクされたノード (単純なプロパティのみを持つ Bean を考えてください) への書き込み時に、Bean は分解されます。
オリカと同じことができるのだろうか?アノテーションを介してクラスを識別し、複雑な場合は各プロパティを再帰的に処理することを意味します。例えば:
プロパティ名と関係オブジェクト (ソフトウェアのメンバーとしての組織を示す) をそれぞれ含む 2 つのノードにロールバックする必要があります。
java - nullの場合、Orikaは宛先に値を設定しません
宛先にnullを設定しようとすると、Orikaで問題が発生します。
現在、ソースに値があり、宛先がnullの場合、私の実装は非常にうまく機能します。また、ソースと宛先の両方に値があります。問題は、宛先にあるときにソースから読み取った値がnullでない場合です。
バージョン1.4.0では、関数ClassMapBuilder.mapNulls(true | false)またはClassMapBuilder.mapNullsInReverse(true | false)を使用してこの問題を解決できることがわかりました。
残念ながら、上記のコードは私の問題を解決していないようです。したがって、宛先フィールドはnullに設定する必要がありますが(ソースによると)、常に変更されません。
これが私が試したさまざまな実装です。
助言がありますか?
java - コンテキストに応じてクラスを別のクラスにマップするように Orika を構成する方法は?
dozer
を使用するプロジェクトを移行しようとしていますorika
。
ドーザーでは、次のようなものを用意するのが一般的です。
次に、オブジェクトを変換するときに mapId を使用します。
だから私の質問は: Orika を設定してそのような mapId を設定するにはどうすればよいですか?
マッパーを定義するときにマップ ID を宣言する方法が見つかりません。
validation - ModelMapper、Orika、Dozer などの Bean マッパーを使用した検証プロパティ パスのマッピング
Bean マッパーを使用してビジネス モデルを DTO モデルに、またはその逆にマッピングする場合: プロパティ パスを変換する簡単な方法を提供するのはどれですか?
私のビジネスロジックが「person.street.number」が必須であると報告し、クライアントにこれを正しい方法、つまり「personDto.streetnumber」として伝えたいとしましょう。
すべての Bean マッパーがこの知識を持っていると確信していますが、この知識にアクセスする簡単な方法を提供しているのはどれですか?
この優れた Bean マッパーのリストに基づいて、ModelMapper と Orika が非常に魅力的に見える場合は、彼らの Web サイトをさらに読んでください。