@@ -452,6 +452,17 @@ protected BeanReader _resolveBeanForDeser(Class<?> raw, POJODefinition beanDef)
452
452
final Map <String , BeanPropertyReader > propMap ;
453
453
Map <String , String > aliasMapping = null ;
454
454
455
+ final Map <String , Integer > indexMap = new HashMap <>();
456
+ if (RecordsHelpers .isRecordType (raw )) {
457
+ final Parameter [] parameters = constructors ._recordCtor .getParameters ();
458
+ for (int i = 0 ; i < parameters .length ; i ++) {
459
+ Parameter parameter = parameters [i ];
460
+ if (!parameter .getName ().isBlank ()) {
461
+ indexMap .put (parameter .getName (), i );
462
+ }
463
+ }
464
+ }
465
+
455
466
if (len == 0 ) {
456
467
propMap = Collections .emptyMap ();
457
468
} else {
@@ -497,13 +508,8 @@ protected BeanReader _resolveBeanForDeser(Class<?> raw, POJODefinition beanDef)
497
508
}
498
509
499
510
if (isRecord ) {
500
- Parameter [] parameters = constructors ._recordCtor .getParameters ();
501
- for (int j = 0 ; j < parameters .length ; j ++) {
502
- Parameter parameter = parameters [j ];
503
- if (!parameter .getName ().isBlank () && parameter .getName ().equals (rawProp .name )) {
504
- propMap .put (rawProp .name , new BeanPropertyReader (rawProp .name , field , setter , j ));
505
- }
506
- }
511
+ final Integer ctorIndex = indexMap .get (rawProp .name );
512
+ propMap .put (rawProp .name , new BeanPropertyReader (rawProp .name , field , setter , ctorIndex ));
507
513
} else {
508
514
propMap .put (rawProp .name , new BeanPropertyReader (rawProp .name , field , setter , i ));
509
515
}
0 commit comments