Closed khauser closed 4 years ago
will have a look thanks for the report
that should be fixed in 8.2.2
I have upgraded now, but stuck in a case #658 we had in 2019 ;) with this inheritance strategy.
The following lines do not compile anymore:
JdbcMapper<TopicOverviewItem> mapper2 = JdbcMapperFactory.newInstance()
.discriminator(BaseTestPlan.class, builder -> builder.when(rs -> true, DwhTestPlan.class))
.newMapper(TopicOverviewItem.class);
I already replaced rs -> true
with rs -> ConstantPredicate.truePredicate()
while eclipse then shows me:
The method when(Function<List<JdbcColumnKey>,Predicate<ResultSet>>, Class<? extends BaseTestPlan>) is ambiguous for the type AbstractMapperFactory.DiscriminatorBuilder<ResultSet,JdbcColumnKey,BaseTestPlan>
Next try was with the compiling lines:
JdbcMapper<TopicOverviewItem> mapper2 = JdbcMapperFactory.newInstance()
.discriminator(BaseTestPlan.class).with(DwhTestPlan.class)
.newMapper(TopicOverviewItem.class);
which ends in a:
java.lang.ClassCastException: org.simpleflatmapper.reflect.ClassMetaWithDiscriminatorId cannot be cast to org.simpleflatmapper.reflect.meta.ClassMeta
at org.simpleflatmapper.map.impl.DiscriminatorReflectionService.newClassMeta(DiscriminatorReflectionService.java:85)
at org.simpleflatmapper.map.impl.DiscriminatorReflectionService.getClassMeta(DiscriminatorReflectionService.java:69)
at org.simpleflatmapper.reflect.meta.PropertyMeta.newPropertyClassMeta(PropertyMeta.java:53)
at org.simpleflatmapper.reflect.meta.PropertyMeta.getPropertyClassMeta(PropertyMeta.java:46)
at org.simpleflatmapper.reflect.meta.ObjectPropertyFinder.lookForSubProperty(ObjectPropertyFinder.java:288)
at org.simpleflatmapper.reflect.meta.ObjectPropertyFinder.lookForProperty(ObjectPropertyFinder.java:218)
at org.simpleflatmapper.reflect.meta.ObjectPropertyFinder.lookForProperties(ObjectPropertyFinder.java:72)
at org.simpleflatmapper.reflect.meta.PropertyFinder.lookForProperties(PropertyFinder.java:55)
at org.simpleflatmapper.reflect.meta.PropertyFinder.findProperty(PropertyFinder.java:38)
at org.simpleflatmapper.reflect.meta.PropertyFinder.findProperty(PropertyFinder.java:33)
at org.simpleflatmapper.map.mapper.PropertyMappingsBuilder._addProperty(PropertyMappingsBuilder.java:97)
at org.simpleflatmapper.map.mapper.PropertyMappingsBuilder.addProperty(PropertyMappingsBuilder.java:70)
at org.simpleflatmapper.map.mapper.DefaultConstantSourceMapperBuilder.addMapping(DefaultConstantSourceMapperBuilder.java:147)
at org.simpleflatmapper.map.mapper.SetRowMapperBuilderImpl.addMapping(SetRowMapperBuilderImpl.java:213)
at org.simpleflatmapper.map.mapper.MapperBuilder.addMapping(MapperBuilder.java:142)
at org.simpleflatmapper.map.mapper.MapperBuilder.addMapping(MapperBuilder.java:152)
at org.simpleflatmapper.jdbc.JdbcMapperFactory$SetRowMapperFactory.newInstance(JdbcMapperFactory.java:351)
at org.simpleflatmapper.jdbc.JdbcMapperFactory$SetRowMapperFactory.newInstance(JdbcMapperFactory.java:339)
at org.simpleflatmapper.map.mapper.DynamicSetRowMapper.getMapper(DynamicSetRowMapper.java:104)
at org.simpleflatmapper.map.mapper.DynamicSetRowMapper.getMapperFromSet(DynamicSetRowMapper.java:94)
at org.simpleflatmapper.map.mapper.DynamicSetRowMapper.stream(DynamicSetRowMapper.java:70)
at org.simpleflatmapper.jdbc.JdbcMapperFactory$DynamicJdbcSetRowMapper.stream(JdbcMapperFactory.java:292)
I'll check that out. looks like some generic erasure makes the call ambiguous usually can get around that by casting explictky the lamba to the targeted type.
I added #717 with what it should work with
Thanks I have a bit more time at the minute, so will have try that out
just pushed 8.2.3 to maven central - it should be available in the next 30 min. the test from the PR is passing with that
Thanks @arnaudroger
Having a simple SQL:
does deliver results with filled booking_date field, whereas
delivers an empty field.