問題タブ [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 Generic Collection カスタム マッピング
Orika はジェネリック型をサポートしていますが、ジェネリック コレクションを操作するには問題があります。Orika はさまざまなコレクション戦略 (累積、非累積、孤立した削除) をサポートしていないため、要件を処理するカスタム マッパーを作成する必要があります。
問題は、Orika がこのマッパーを適用せず、代わりに通常のコレクション マッピング ロジックを使用しようとすることです。
また、親マッピングで型リストを明示的に設定しようとしました
しかし、これも取り上げられませんでした。
私が見逃しているものについてのヒントはありますか?
java - Orika を使用して 2 つの値を 1 つのプロパティにマッピングする
次のような a と b の 2 つのプロパティを含むソース オブジェクトがあるとします。
および 1 つのプロパティ c を持つターゲット オブジェクト:
次のようなマッピングを定義したいと思います。
- a が null でない場合、プロパティ a を c にマップします
- b が null でない場合、プロパティ b を c にマップします
mapNulls を false に設定したマッパーで可能だと思いました。
ただし、プロパティ a を null 以外の値に設定し、プロパティ b を null のままにすると、マッピングの結果、c が null に設定されたターゲット オブジェクトが生成されます。
mapNulls の目的を誤解していますか?
java - Orika マッピング spring の org.springframework.security.core.GrantedAuthority
この質問でお手数をおかけして申し訳ありませんが、私は最終的にヘッドストンパーを見つけてしまい、これを間違った方法で扱っているのではないかと思っています.
のコレクションを含むクラスをマッピングしorg.springframework.security.core.authority.SimpleGrantedAuthority
て、ORM によって熱心にロードされたクラスを春のセキュリティ クラスに送信する必要がないようにしたいと考えています。しかし、その "role" 属性は getter "getAuthority" に関連付けられており、オリカが問題を起こすのはそのときです。Orika に getter によって返された値を使用させて、宛先クラスの setter に入れることはできますか?
あなたが十分に気にかけているなら、ここに私の問題の少しの文脈があります. アプリに Spring セキュリティを使用しています。org.springframework.security.core.userdetails.UserDetails
ユーザーが認証され、権限があるかどうかをSpringが確認できるように、を返すサービスがあります。私たちが持っている UserDetail の実装は、という名前のローカルのものUser
です。このクラスは を実装しているため、このユーザーの権限を返すorg.springframework.security.core.userdetails.UserDetails
メソッドがあります。public Collection<? extends GrantedAuthority> getAuthorities();
User
データベースにこれがあり、休止状態で処理されたという事実を除いて、すべてが順調でした。開いているセッションを表示したままにする最初の選択肢。私たちはそれを望んでいません。2 番目の選択肢は、ORM、EARGER のフェッチを行うことでした。私たちもそれを望んでいませんでした。そこで、DTO を使用して UserDetail を実装し、それを orika でマッピングすることにしました。その時、すべての地獄が解き放たれました。org.springframework.security.core.GrantedAuthority
インターフェースです。使用している具象クラスはorg.springframework.security.core.authority.SimpleGrantedAuthority
. これは、属性名が「role」であるにもかかわらず、その getter が「getAuthority」であるため、マップするのが難解で危険なクラスです。
スプリングチームとオリカチームはあまり仲が良くないようです。それ以外の場合は、Java 標準に従ってプロパティに名前を付け、orika はそれを直接マッピングしたでしょう。また、私はこの特定のケースのためにカスタム マッパーを定義することに消極的であり、それが私を悩ませてきました。すべての「魔法」を特定のクラスのカスタムマッパーに置き換える以外に、ゲッターメソッドによって返された値をオリカに使用させる既知の方法はありますか?
java - Orika - 3 番目のフィールドが文字列と一致する場合にのみ 2 つのフィールドをマップします
Orika を使用してマッピングしたいフィールドが 2 つあります。
ClazzB の 3 番目のフィールド「type」が文字列「stk」と一致する場合にのみ、そのフィールド名を sname の値にマップしたいと考えています。
Orikaでも可能ですか?
mapping - orika マッピング エラーがバイトコードに存在する
プロジェクトに orika を含めようとしています。Id 列のみを取得する BaseEntity & BaseEntityDAO クラスがあります。そして、それぞれ BaseAuditEntity & BaseAuditEntityDTO クラスによって継承されたもの。これらのクラスには、created by、created_date、updated_by、updated_datetime などの監査列があります。次に、実際のエンティティおよび DTO クラスによって継承されるこれらのクラスは、監査列を取得するかどうかに依存します。
ParameterizedTypes を受け取り、基本 CRUD 実装を持つ BaseServiceBean があります。ここでは、orika のドキュメントからこの例を取り上げました。だから私の問題は、実際にデータをマッピングしているときに次のエラーメッセージが表示されることです.....
例外の詳細: 場所: ma/glasnost/orika/generated/Orika_UsersDTO_Users_Mapper25974687500962$0.mapAtoB(Ljava/lang/Object;Ljava/lang/Object;Lma/glasnost/orika/MappingContext;)V @59: invokeinterface 理由: bytecode Bytecode: 0000000: 2a2b 2c2d b700 0c2b c000 0e3a 042c c000 0000010: 103a 0519 04b6 0016 c000 1801 a500 2d19 0000020: 052a b400 1e03 32c0 0020 1904 b600 16c0 0000030: 0018 2ab4 0024 0332 c000 26b9 002a 0400 0000040: c000 2cb6 0032 a700 0919 0501 b600 3219 0000050: 04b6 0036 c000 3801 a500 2d19 052a b400 0000060: 1e04 32c0 0020 1904 b600 36c0 0038 2ab4 0000070: 0024 0432 c000 26b9 002a 0400 c000 38b6 0000080: 003c a700 0919 0501 b600 3c19 0519 04b6 0000090: 003f c000 18b6 0043 1905 1904 b600 46c0 00000a0: 0018 b600 4919 0519 04b6 004c c000 18b6 00000b0:004f 1905 1904 b600 52c0 0018 b600 5519 00000c0: 0519 04b6 005b c000 2cb6 0060 1905 1904 00000d0: b600 63c0 0018 b600 6619 0519 04b6 0069 00000e0: c000 18b6 006c 1905 1904 b600 6fc0 0018 00000f0: b600 7219 0519 04b6 0075 c000 18b6 0078 0000100: 1905 1904 b600 7bc0 0018 b600 7e19 04b6 0000110: 0081 c000 1801 a500 2d19 052a b400 1e03 0000120: 32c0 0020 1904 b600 81c0 0018 2ab4 0024 0000130: 0332 c000 26b9 002a 0400 c000 2cb6 0084 0000140: a700 0919 0501 b600 8419 04b6 0087 c000 0000150: 3801 a500 2d19 052a b400 1e04 32c0 0020 0000160: 1904 b600 87c0 0038 2ab4 0024 0432 c000 0000170: 26b9 002a 0400 c000 38b6 008a a700 0919 0000180: 0501 b600 8a19 0519 04b6 008d c000 18b6 0000190: 0090 1905 1904 b600 93c0 0018 b600 962a 00001a0: b400 9a01 a500 112a b400 9a19 0419 052d 00001b0:b900 9d04 00b1
スタックマップ テーブル: append_frame(@73,Object[#14],Object[#16]) same_frame(@79) same_frame(@133) same_frame(@139) same_frame_extended(@323) same_frame(@329) same_frame(@383)同じフレーム(@389) 同じフレーム(@437)
原因: java.lang.VerifyError: Inconsistent args count operand in invokeinterface 例外の詳細: 場所: ma/glasnost/orika/generated/Orika_UsersDTO_Users_Mapper25974687500962$0.mapAtoB(Ljava/lang/Object;Ljava/lang/Object;Lma/glasnost/orika /MappingContext;)V @59:InvokeInterface理由:エラーがBytecode Bytecode:0000000:2A2B 2C2D B700 0C2B C000 0E3A 042C C00000010:103A 0519 04B6 0016 C000 1801 A500 2D19000002020202020202020202020202020202020202020202020202020202020202020202020202020 0018 2ab4 0024 0332 c000 26b9 002a 0400 0000040: c000 2cb6 0032 a700 0919 0501 b600 3219 0000050: 04b6 0036 c000 3801 a500 2d19 052a b400 0000060: 1e04 32c0 0020 1904 b600 36c0 0038 2ab4 0000070: 0024 0432 c000 26b9 002a 0400 c000 38b6 0000080: 003c a700 0919 0501 b600 3c19 0519 04b6 0000090:003f c000 18b6 0043 1905 1904 b600 46c0 00000a0: 0018 b600 4919 0519 04b6 004c c000 18b6 00000b0: 004f 1905 1904 b600 52c0 0018 b600 5519 00000c0: 0519 04b6 005b c000 2cb6 0060 1905 1904 00000d0: b600 63c0 0018 b600 6619 0519 04b6 0069 00000e0: c000 18b6 006c 1905 1904 b600 6fc0 0018 00000f0: b600 7219 0519 04b6 0075 c000 18b6 0078 0000100: 1905 1904 b600 7bc0 0018 b600 7e19 04b6 0000110: 0081 c000 1801 a500 2d19 052a b400 1e03 0000120: 32c0 0020 1904 b600 81c0 0018 2ab4 0024 0000130: 0332 c000 26b9 002a 0400 c000 2cb6 0084 0000140: a700 0919 0501 b600 8419 04b6 0087 c000 0000150: 3801 a500 2d19 052a b400 1e04 32c0 0020 0000160: 1904 b600 87c0 0038 2ab4 0024 0432 c000 0000170: 26b9 002a 0400 c000 38b6 008a a700 0919 0000180: 0501 b600 8a19 0519 04b6 008d c000 18b6 0000190:0090 1905 1904 b600 93c0 0018 b600 962a 00001a0: b400 9a01 a500 112a b400 9a19 0419 052d 00001b0: b900 9d04 00b1
スタックマップ テーブル: append_frame(@73,Object[#14],Object[#16]) same_frame(@79) same_frame(@133) same_frame(@139) same_frame_extended(@323) same_frame(@329) same_frame(@383)同じフレーム(@389) 同じフレーム(@437)
DB からエンティティを取得した後、エンティティから DTO にマップしようとすると、このエラーが発生します。
java - Orika - リストからリストへの変換
これはおそらく簡単なものですが、ドキュメントで見つけることができません。私は人のクラスを持っています
とそのリスト
それらを変更して変更したい
ただし、明示的なループはありません。リストにMapperFacade.mapを使用して1行の変換をリストする方法はありますか?
java - Hibernate エンティティへの Orika マッピングで例外がスローされる
DTO を対応する Hibernate エンティティにマップしようとしています。Hibernate セッションからエンティティをロードし、すぐにマッピングを実行します。
これは私が得る例外です:
これは私のファクトリ ビルダーで構成された HibernateUnenhanceStrategy を使用したものです。これが私の Mapper の外観です。
現在の私の回避策は、セッションからの読み込みと Orika でのマッピングの間で、エンティティ自体の拡張を解除することですが、これについてはあまり明示したくありません。どうすればこれを機能させることができますか?