@@ -409,6 +409,38 @@ void testToPOJO_SetMeasureName() {
409409 Assertions .assertTrue (result .size () == 1 );
410410 }
411411
412+ @ Test
413+ void testToPOJOInheritance () {
414+ // Given...
415+ mapper .cacheMeasurementClass (MySubMeasurement .class );
416+
417+ String superValue = UUID .randomUUID ().toString ();
418+ String subValue = "my sub value" ;
419+ List <String > columnList = Arrays .asList ("superValue" , "subValue" );
420+
421+ List <Object > firstSeriesResult = Arrays .asList (superValue , subValue );
422+
423+ QueryResult .Series series = new QueryResult .Series ();
424+ series .setName ("MySeriesName" );
425+ series .setColumns (columnList );
426+ series .setValues (Arrays .asList (firstSeriesResult ));
427+
428+ QueryResult .Result internalResult = new QueryResult .Result ();
429+ internalResult .setSeries (Arrays .asList (series ));
430+
431+ QueryResult queryResult = new QueryResult ();
432+ queryResult .setResults (Arrays .asList (internalResult ));
433+
434+ //When...
435+ List <MySubMeasurement > result =
436+ mapper .toPOJO (queryResult , MySubMeasurement .class , "MySeriesName" );
437+
438+ //Then...
439+ Assertions .assertTrue (result .size () == 1 );
440+ Assertions .assertEquals (superValue , result .get (0 ).superValue );
441+ Assertions .assertEquals (subValue , result .get (0 ).subValue );
442+ }
443+
412444 @ Measurement (name = "CustomMeasurement" )
413445 static class MyCustomMeasurement {
414446
@@ -456,7 +488,31 @@ public String toString() {
456488 }
457489 }
458490
459- @ Measurement (name = "foo" )
491+ @ Measurement (name = "SuperMeasurement" )
492+ static class MySuperMeasurement {
493+
494+ @ Column (name = "superValue" )
495+ protected String superValue ;
496+
497+ @ Override
498+ public String toString () {
499+ return "SuperMeasurement [superValue=" + superValue + "]" ;
500+ }
501+ }
502+
503+ @ Measurement (name = "SubMeasurement" )
504+ static class MySubMeasurement extends MySuperMeasurement {
505+
506+ @ Column (name = "subValue" )
507+ protected String subValue ;
508+
509+ @ Override
510+ public String toString () {
511+ return "MySubMeasurement [subValue=" + subValue + ", superValue=" + superValue + "]" ;
512+ }
513+ }
514+
515+ @ Measurement (name = "foo" )
460516 static class MyPojoWithUnsupportedField {
461517
462518 @ Column (name = "bar" )
0 commit comments