問題タブ [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.

0 投票する
1 に答える
6514 参照

java - マッピング プロセッサの内部エラー: java.lang.StackOverflowError

ドメイン オブジェクトをマップしようとすると、次の StackOverflowError 例外が発生します。循環依存関係を無効にするプロパティを無視しようとしました。

私のドメイン モデルの中心にあるのは、User と Exercise を持つ WorkoutSet です。

WorkoutSetMapper からマッピング アノテーションを削除すると、UserMapperImpl と ExerciseMapperImpl が期待どおりに生成されます。

エラー:(15, 1) java: マッピング プロセッサの内部エラー: java.lang.StackOverflowError at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools .javac.code.Types$UnaryVisitor.visit(Types.java:4652) at com.sun.tools.javac.code.Types.supertype(Types.java:2315) at com.sun.tools.javac.code.Types $13.visitClassType(Types.java:1966) at com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type .java:786) で com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) で com.sun.tools.javac.code.Types.asSuper(Types.java:1952) でcom.sun.tools.javac.code.Types$13.visitClassType(Types.java:1968) at com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955) at com.sun.tools. javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) at com.sun.tools.javac.code.Types.asSuper( Types.java:1952) com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) at com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1955) com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) で com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) で com.sun .tools.javac.code.Types.asSuper(Types.java:1952) at com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) at com.sun.tools.javac.code. Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit (Types.java:4571) com.sun.tools.javac.code.Types.asSuper(Types.java:1952) com.sun.tools.javac.code.Types$13.visitClassType(Types.java:1975) com.sun. tools.javac.code.Types$13.visitClassType(Types.java:1955) at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) at com.sun.tools.javac.code .Types$DefaultTypeVisitor.visit(Types.java:4571) at com.sun.tools.javac.code.Types.asSuper(Types.java:1952) at com.sun.tools.javac.code.Types$4.visitClassType( Types.java:921) com.sun.tools.javac.code.Types$4.visitClassType(Types.java:844) com.sun.tools.javac.code.Type$ClassType.accept(Type.java:786) ) com.sun.tools.javac.code.Types$DefaultTypeVisitor.visit(Types.java:4571) で com.sun.tools.javac.code.Types.isSubtype(Types.java:840) で com.sun. tools.javac.code.Types.isSubtype(Types.java:804) com.sun.tools.javac.model.JavacTypes.isSubtype(JavacTypes.java:98) org.mapstruct.ap.internal.util.workarounds.SpecificCompilerWorkarounds.isSubtype(SpecificCompilerWorkarounds.java:76) org.mapstruct .ap.internal.util.workarounds.TypesDecorator.isSubtype(TypesDecorator.java:68) org.mapstruct.ap.internal.model.common.Type.isSubType(Type.java:638) org.mapstruct.ap.internal .model.common.Type.isCollection(Type.java:628) の org.mapstruct.ap.internal.model.common.Type.isCollectionOrMap(Type.java:624) の org.mapstruct.ap.internal.model.common .Type.getAlternativeTargetAccessors(Type.java:598) at org.mapstruct.ap.internal.model.common.Type.getPropertyWriteAccessors(Type.java:419) at org.mapstruct.ap.internal.model.source.TargetReference$BuilderFromTargetMapping .org.mapstruct.ap.internal.model.source.TargetReference$BuilderFromTargetMapping.build(TargetReference.java:120) の getTargetEntries(TargetReference.java:144) org.mapstruct.ap.internal.model.source.Mapping.init( Mapping.java:227) org.mapstruct.ap.internal.model.source.SourceMethod$Builder.build(SourceMethod.java:207) org.mapstruct.ap.internal.processor.MethodRetrievalProcessor.getMethodRequiringImplementation(MethodRetrievalProcessor.java: 257) org.mapstruct.ap.internal.processor.MethodRetrievalProcessor.getMethod(MethodRetrievalProcessor.java:193) で org.mapstruct.ap.internal.processor.MethodRetrievalProcessor.retrieveMethods(MethodRetrievalProcessor.java:148) で org.mapstruct.ap org.mapstruct の .internal.processor.MethodRetrievalProcessor.retrieveMethods(MethodRetrievalProcessor.java:163)。ap.internal.processor.MethodRetrievalProcessor.retrieveMethods(MethodRetrievalProcessor.java:163) org.mapstruct.ap.internal.processor.MethodRetrievalProcessor.retrieveMethods(MethodRetrievalProcessor.java:163) org.mapstruct.ap.internal.processor.MethodRetrievalProcessor. org.mapstruct.ap.internal.processor.MethodRetrievalProcessor.retrieveMethods での retrieveMethods(MethodRetrievalProcessor.java:163) .......

私のドメインクラスは次のとおりです

私のDTOクラスは次のとおりです

私のマッパーインターフェースは次のとおりです

ClassMapper は次のように定義されます

テキストの壁を避けるために getter メソッドと setter メソッドを省略しましたが、コード ベース全体はhttps://github.com/tonsV2/Lift-Log-Backendにあります。私が間違ったことについての手がかりはありますか?

0 投票する
2 に答える
10071 参照

java - MapStruct : ネストされた Iterable から Non-Iterable へのマッピング?

Qualifier を使用した Iterable から Non-Iterable へのマッピングに関するこの例を見つけました。

https://github.com/mapstruct/mapstruct-examples/tree/master/mapstruct-iterable-to-non-iterable

しかし、このマッピングでネストされたプロパティをマップできるようにするにはどうすればよいでしょうか (ドット アノテーションを使用)。

たとえば、ソース オブジェクトのコレクションの最初の要素のフィールド xyz をターゲット オブジェクトのプレーン フィールドにマッピングしますか?

この例では修飾子を定義しています

次にカスタムマッパーを定義します

最後に、マッピングは次のように定義されます。

しかし、メール コレクションの最初の要素から特定のフィールドを抽出したい場合、たとえば、コードで行ったようにemails.get(0).getEmailAddress?

たとえば、次のようなマッピングを書くことを期待しています:

0 投票する
3 に答える
8481 参照

java - mapstructを使用してenumをPOJOに変換するには?

カスタム実装なしで mapstruct を使用して enum を POJO に変換するにはどうすればよいですか?

例えば

POJO様へ

参考までに、MapStruct 1.1.0.Final を使用しています。

0 投票する
1 に答える
765 参照

maven - 生成されたソースで Weld ルックアップ クラスを作成する方法

私はMapStructを使用してマッパーを生成し、エンティティをDTOに、またはその逆に変換する作業を支援するMavenプロジェクトを持っています。このマッパーは、maven の generate-sources フェーズで生成され、target/generated-sources および target/AppName/WEB-INF/classes フォルダーに格納されます。

たとえば、私はこのマッパーを持っています

CDI を使用するように MapStruct を構成したので、次のように生成されます。

Wildflyサーバーで実行すると完全に機能します。問題は、このクラスをjunitテストしようとしていることです。このために、以下に示すようにカスタムランナーを実装しました。

と:

これらの実装はhereから取得されました。

最後に、テスト:

実行しようとすると、これがコンソール出力です。

log4j:WARN ロガー (org.jboss.logging) のアペンダーが見つかりませんでした。log4j:WARN log4j システムを適切に初期化してください。log4j:WARN 詳細については、http: //logging.apache.org/log4j/1.2/faq.html#noconfigを参照してください。

ログに関する警告、および次の例外:

java.lang.ExceptionInInitializerError の br.com.treinoos.common.cdi.WeldJUnit4Runner.createTest(WeldJUnit4Runner.java:15) の org.junit.runners.BlockJUnit4ClassRunner$1.runReflectiveCall(BlockJUnit4ClassRunner.java:266) の org.junit.internal .runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12) で org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:263) で org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78) でorg.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:57) org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) org.junit.runners.ParentRunner$1.schedule(ParentRunner.java: 71) org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) で org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) at org.junit.runners.ParentRunner.run(ParentRunner.java:363) at org.eclipse.jdt .internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:86) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675) の .runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459) org.eclipse.jdt.internal.junit.runner.RemoteTestRunner の.run(RemoteTestRunner.java:382) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192) 原因: org.jboss.weld.exceptions.DeploymentException: WELD-001408:インジェクション ポイント [BackedAnnotatedField] で修飾子 @Default を持つ型 RuleMapper の満たされていない依存関係 [BackedAnnotatedField] @Inject private treinoos.mappers.RuleMapperTest.ruleMapper(RuleMapperTest.java:0) org.jboss.weld.bootstrap.Validator.validateInjectionPointForDeploymentProblems(Validator.java:359) org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java: 281) org.jboss.weld.bootstrap.Validator.validateGeneralBean(Validator.java:134) で org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:155) で org.jboss.weld.bootstrap.Validator .validateBean(Validator.java:518) at org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:68) org.jboss.weld.bootstrap.ConcurrentValidator$1.doWork(ConcurrentValidator.java:66) で org.jboss.weld.executor.IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:63) で org.jboss.weld.executor .IterativeWorkerTaskFactory$1.call(IterativeWorkerTaskFactory.java:56) で java.util.concurrent.FutureTask.run(FutureTask.java:266) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で java.util .concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)call(IterativeWorkerTaskFactory.java:56) で java.util.concurrent.FutureTask.run(FutureTask.java:266) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で java.util.concurrent.ThreadPoolExecutor で$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)call(IterativeWorkerTaskFactory.java:56) で java.util.concurrent.FutureTask.run(FutureTask.java:266) で java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) で java.util.concurrent.ThreadPoolExecutor で$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745)

同様に、Weld は生成されたクラスを検索できませんでした。beans.xmlはすでにの下に作成されていsrc/test/resources/META-INF/beans.xmlます:

誰でもこの問題の解決策を教えてもらえますか? 私はすでに似たようなものを検索しましたが、成功しませんでした。

0 投票する
1 に答える
5876 参照

java - MapStruct は一部の属性をマップしません

Mapstruct は、コンパイル段階で次のエラーをスローします。

ConfigsMapperImpl は抽象ではなく、抽象メソッド toConfigs(ConfigsDTO) をオーバーライドしません

同時に、MapStruct は他のすべてのメソッドのコードを適切に生成します。

Configobject が よりも多くのフィールドを持っているために起こると思いますConfigsDTO

0 投票する
3 に答える
1359 参照

mapstruct - mapstruct は JPA メタモデルクラスで動作しますか?

コンパイル エラーが発生します。

ただし、mapstruct 注釈プロセッサを削除すると、正常にコンパイルされます。

mapstruct は生成される前にクラスをスキャンしていると思いますか? これに対する解決策はありますか?