奇怪的行为在运行时classcastepception

发布于 2025-02-09 19:32:12 字数 7643 浏览 2 评论 0原文

我正在使用Mapstruct将一个POJOS映射到另一个POJO模型

以下是映射自动生成

        protected Map<String, GenericAttributeData> headerAttributeGenericDataTypeMapToStringGenericAttributeDataMap(Map<HeaderAttribute, GenericDataType> map) {
        if ( map == null ) {
            return null;
        }

        Map<String, GenericAttributeData> map1 = new HashMap<String, GenericAttributeData>( Math.max( (int) ( map.size() / .75f ) + 1, 16 ) );

        for ( java.util.Map.Entry<HeaderAttribute, GenericDataType> entry : map.entrySet() ) {
            String key = entry.getKey().name(); // THIS IS THE LINE WHERE I GET EXCEPTION
            GenericAttributeData value = genericDataTypeToGenericAttributeData( entry.getValue() );
            map1.put( key, value );
        }

        return map1;
    }

    protected GenericAttributeData genericDataTypeToGenericAttributeData(GenericDataType genericDataType) {
        if ( genericDataType == null ) {
            return null;
        }

        GenericAttributeData genericAttributeData = new GenericAttributeData();

        if ( genericDataType.getType() != null ) {
            genericAttributeData.setType( genericDataType.getType().name() );
        }
        genericAttributeData.setValue( genericDataType.getValue() );

        return genericAttributeData;
    }

此方法基本上拍摄源pojos并将其转换为目标模型映射的方法。 构建正在通过。

当我运行代码时,我会在此方法中获得班级例外: headerattributeGenericDatatAtatatAtatatAtatatAtateCtoStringGenericAttributedAtAtAmap

stacktrace:


23 Jun 2022 09:34:46,218 ^[[1;31m[ERROR]^[[m dd6af157-4089-4b37-aa9b-225ed4b4394b (Bobcat-0) com.service.myActivity: class java.lang.String cannot be cast to class com.service.dao.dynamodb.entity.header.HeaderAttribute (java.lang.String is in module java.base of loader 'bootstrap'; com.service.dao.dynamodb.entity.header.HeaderAttribute is in unnamed module of loader com.company.cloud9.launcher.BootstrapClassLoader @75bd9247)
java.lang.ClassCastException: class java.lang.String cannot be cast to class com.service.dao.dynamodb.entity.header.HeaderAttribute (java.lang.String is in module java.base of loader 'bootstrap'; com.service.dao.dynamodb.entity.header.HeaderAttribute is in unnamed module of loader com.company.cloud9.launcher.BootstrapClassLoader @75bd9247)
        at com.service.adapters.mapper.InvoiceHeaderDoMapperImpl.headerAttributeGenericDataTypeMapToStringGenericAttributeDataMap(InvoiceHeaderDoMapperImpl.java:187) ~[myService-1.0.jar:?]
        at com.service.adapters.mapper.InvoiceHeaderDoMapperImpl.mapDOToInvoiceHeader(InvoiceHeaderDoMapperImpl.java:46) ~[myService-1.0.jar:?]
        at com.service.adapters.impl.InvoiceHeaderAdapterImpl.adaptDBInvoiceHeaderToCoralModel(InvoiceHeaderAdapterImpl.java:29) ~[myService-1.0.jar:?]
        at com.service.handler.SubmitAdditionalLinesHandler.buildInventoryInvoiceFromStagingDb(SubmitAdditionalLinesHandler.java:129) ~[myService-1.0.jar:?]
        at com.service.handler.SubmitAdditionalLinesHandler.handleAdditionalLineItemsSubmissionRequest(SubmitAdditionalLinesHandler.java:83) ~[myService-1.0.jar:?]
        at com.service.component.SubmitAdditionalLinesComponent.submitAdditionalLines(SubmitAdditionalLinesComponent.java:30) ~[myService-1.0.jar:?]
        at com.service.service.SubmitInvoiceActivity.submitAdditionalLines_aroundBody2(SubmitInvoiceActivity.java:84) ~[myService-1.0.jar:?]
        at com.service.service.SubmitInvoiceActivity$AjcClosure3.run(SubmitInvoiceActivity.java:1) ~[myService-1.0.jar:?]
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:167) ~[aspectjweaver-1.9.6.jar:?]
        at com.company.metrics.declarative.aspectj.JoinpointInvocationHandle.proceed(JoinpointInvocationHandle.java:60) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.company.metrics.declarative.AbstractMethodMetricInterceptor.handleInvocation(AbstractMethodMetricInterceptor.java:283) ~[DeclarativeCoralMetrics-2.2.jar:?]
        at com.company.metrics.declarative.aspectj.MetricMethodAspect$ConfiguredMethodAspect.invoke(MetricMethodAspect.java:108) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.company.metrics.declarative.aspectj.MetricMethodAspect.captureMethodMetrics(MetricMethodAspect.java:59) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.service.service.SubmitInvoiceActivity.submitAdditionalLines(SubmitInvoiceActivity.java:82) ~[myService-1.0.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at com.company.coral.reflect.invoke.ReflectiveInvokerFactory$1.invoke(ReflectiveInvokerFactory.java:77) ~[CoralReflect-1.1.jar:?]
        at com.company.coralx.exception.ExceptionTranslationInterceptor.intercept(ExceptionTranslationInterceptor.java:213) ~[companyCoralExceptionTranslation-1.1.jar:?]
        at com.company.coral.reflect.invoke.InterceptedInvoker.invoke(InterceptedInvoker.java:74) ~[CoralReflect-1.1.jar:?]
        at com.company.coral.validate.ValidationInterceptor.intercept(ValidationInterceptor.java:106) ~[CoralValidate-1.1.jar:?]
        at com.company.coral.reflect.invoke.InterceptedInvoker.invoke(InterceptedInvoker.java:74) ~[CoralReflect-1.1.jar:?]
        at com.company.coral.service.DefaultActivityInvoker.invoke(DefaultActivityInvoker.java:29) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ContinuationActivityInvokerFactory$1.invoke(ContinuationActivityInvokerFactory.java:89) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityInterceptors.invoke(ActivityInterceptors.java:74) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityHandler.invoke(ActivityHandler.java:186) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityHandler.before(ActivityHandler.java:145) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.TransmutingContinuationHandler.before(TransmutingContinuationHandler.java:50) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.Chain.componentBefore(Chain.java:94) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.Chain.before(Chain.java:72) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.helper.ChainHelper.before(ChainHelper.java:94) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.AbstractOrchestrator.doWork(AbstractOrchestrator.java:84) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.PassiveOrchestrator.enqueue(PassiveOrchestrator.java:93) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.GracefulShutdownOrchestrator.enqueue(GracefulShutdownOrchestrator.java:301) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.helper.OrchestratorHelper.enqueue(OrchestratorHelper.java:72) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.processRequestOrThrow(CoralServletRequestHandler.java:172) ~[Bobcat-3.0.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.processRequest(CoralServletRequestHandler.java:150) ~[Bobcat-3.0.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.service(CoralServletRequestHandler.java:115) ~[Bobcat-3.0.jar:?]

我还试图打印此方法的值,它们看起来不错。我还尝试添加调试断点,值似乎还可以。

有人可以在这里帮忙吗?

I am using Mapstruct to map convert one POJOs to another POJO model

Following is the method that mapstruct auto generated

        protected Map<String, GenericAttributeData> headerAttributeGenericDataTypeMapToStringGenericAttributeDataMap(Map<HeaderAttribute, GenericDataType> map) {
        if ( map == null ) {
            return null;
        }

        Map<String, GenericAttributeData> map1 = new HashMap<String, GenericAttributeData>( Math.max( (int) ( map.size() / .75f ) + 1, 16 ) );

        for ( java.util.Map.Entry<HeaderAttribute, GenericDataType> entry : map.entrySet() ) {
            String key = entry.getKey().name(); // THIS IS THE LINE WHERE I GET EXCEPTION
            GenericAttributeData value = genericDataTypeToGenericAttributeData( entry.getValue() );
            map1.put( key, value );
        }

        return map1;
    }

    protected GenericAttributeData genericDataTypeToGenericAttributeData(GenericDataType genericDataType) {
        if ( genericDataType == null ) {
            return null;
        }

        GenericAttributeData genericAttributeData = new GenericAttributeData();

        if ( genericDataType.getType() != null ) {
            genericAttributeData.setType( genericDataType.getType().name() );
        }
        genericAttributeData.setValue( genericDataType.getValue() );

        return genericAttributeData;
    }

This method basically takes Map of source POJOs and converts them to Map of destination models.
The build is passing.

When I run the code, i am getting ClassCast exception in this method :headerAttributeGenericDataTypeMapToStringGenericAttributeDataMap

Stacktrace:


23 Jun 2022 09:34:46,218 ^[[1;31m[ERROR]^[[m dd6af157-4089-4b37-aa9b-225ed4b4394b (Bobcat-0) com.service.myActivity: class java.lang.String cannot be cast to class com.service.dao.dynamodb.entity.header.HeaderAttribute (java.lang.String is in module java.base of loader 'bootstrap'; com.service.dao.dynamodb.entity.header.HeaderAttribute is in unnamed module of loader com.company.cloud9.launcher.BootstrapClassLoader @75bd9247)
java.lang.ClassCastException: class java.lang.String cannot be cast to class com.service.dao.dynamodb.entity.header.HeaderAttribute (java.lang.String is in module java.base of loader 'bootstrap'; com.service.dao.dynamodb.entity.header.HeaderAttribute is in unnamed module of loader com.company.cloud9.launcher.BootstrapClassLoader @75bd9247)
        at com.service.adapters.mapper.InvoiceHeaderDoMapperImpl.headerAttributeGenericDataTypeMapToStringGenericAttributeDataMap(InvoiceHeaderDoMapperImpl.java:187) ~[myService-1.0.jar:?]
        at com.service.adapters.mapper.InvoiceHeaderDoMapperImpl.mapDOToInvoiceHeader(InvoiceHeaderDoMapperImpl.java:46) ~[myService-1.0.jar:?]
        at com.service.adapters.impl.InvoiceHeaderAdapterImpl.adaptDBInvoiceHeaderToCoralModel(InvoiceHeaderAdapterImpl.java:29) ~[myService-1.0.jar:?]
        at com.service.handler.SubmitAdditionalLinesHandler.buildInventoryInvoiceFromStagingDb(SubmitAdditionalLinesHandler.java:129) ~[myService-1.0.jar:?]
        at com.service.handler.SubmitAdditionalLinesHandler.handleAdditionalLineItemsSubmissionRequest(SubmitAdditionalLinesHandler.java:83) ~[myService-1.0.jar:?]
        at com.service.component.SubmitAdditionalLinesComponent.submitAdditionalLines(SubmitAdditionalLinesComponent.java:30) ~[myService-1.0.jar:?]
        at com.service.service.SubmitInvoiceActivity.submitAdditionalLines_aroundBody2(SubmitInvoiceActivity.java:84) ~[myService-1.0.jar:?]
        at com.service.service.SubmitInvoiceActivity$AjcClosure3.run(SubmitInvoiceActivity.java:1) ~[myService-1.0.jar:?]
        at org.aspectj.runtime.reflect.JoinPointImpl.proceed(JoinPointImpl.java:167) ~[aspectjweaver-1.9.6.jar:?]
        at com.company.metrics.declarative.aspectj.JoinpointInvocationHandle.proceed(JoinpointInvocationHandle.java:60) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.company.metrics.declarative.AbstractMethodMetricInterceptor.handleInvocation(AbstractMethodMetricInterceptor.java:283) ~[DeclarativeCoralMetrics-2.2.jar:?]
        at com.company.metrics.declarative.aspectj.MetricMethodAspect$ConfiguredMethodAspect.invoke(MetricMethodAspect.java:108) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.company.metrics.declarative.aspectj.MetricMethodAspect.captureMethodMetrics(MetricMethodAspect.java:59) ~[DeclarativeCoralMetricsAspectJ-2.2.jar:?]
        at com.service.service.SubmitInvoiceActivity.submitAdditionalLines(SubmitInvoiceActivity.java:82) ~[myService-1.0.jar:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
        at com.company.coral.reflect.invoke.ReflectiveInvokerFactory$1.invoke(ReflectiveInvokerFactory.java:77) ~[CoralReflect-1.1.jar:?]
        at com.company.coralx.exception.ExceptionTranslationInterceptor.intercept(ExceptionTranslationInterceptor.java:213) ~[companyCoralExceptionTranslation-1.1.jar:?]
        at com.company.coral.reflect.invoke.InterceptedInvoker.invoke(InterceptedInvoker.java:74) ~[CoralReflect-1.1.jar:?]
        at com.company.coral.validate.ValidationInterceptor.intercept(ValidationInterceptor.java:106) ~[CoralValidate-1.1.jar:?]
        at com.company.coral.reflect.invoke.InterceptedInvoker.invoke(InterceptedInvoker.java:74) ~[CoralReflect-1.1.jar:?]
        at com.company.coral.service.DefaultActivityInvoker.invoke(DefaultActivityInvoker.java:29) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ContinuationActivityInvokerFactory$1.invoke(ContinuationActivityInvokerFactory.java:89) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityInterceptors.invoke(ActivityInterceptors.java:74) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityHandler.invoke(ActivityHandler.java:186) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.ActivityHandler.before(ActivityHandler.java:145) ~[CoralActivity-1.1.jar:?]
        at com.company.coral.service.TransmutingContinuationHandler.before(TransmutingContinuationHandler.java:50) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.Chain.componentBefore(Chain.java:94) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.Chain.before(Chain.java:72) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.helper.ChainHelper.before(ChainHelper.java:94) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.AbstractOrchestrator.doWork(AbstractOrchestrator.java:84) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.PassiveOrchestrator.enqueue(PassiveOrchestrator.java:93) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.GracefulShutdownOrchestrator.enqueue(GracefulShutdownOrchestrator.java:301) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.service.helper.OrchestratorHelper.enqueue(OrchestratorHelper.java:72) ~[CoralOrchestrator-1.1.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.processRequestOrThrow(CoralServletRequestHandler.java:172) ~[Bobcat-3.0.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.processRequest(CoralServletRequestHandler.java:150) ~[Bobcat-3.0.jar:?]
        at com.company.coral.bobcat.CoralServletRequestHandler.service(CoralServletRequestHandler.java:115) ~[Bobcat-3.0.jar:?]

I also tried to print the values of this method and they seem fine. I also tried adding debug breakpoints and the values seem okay.

Can someone please help here?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

看春风乍起 2025-02-16 19:32:12

它可能与您的方面有某种联系。也许某些方面取代了您的地图中的值,因此它返回了错误类型的值

It may be somehow connected with your aspects. Maybe some aspect replaces the value in your map, so it returns a value of a wrong type

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文