@ -32,11 +32,7 @@ import lombok.With;
@@ -32,11 +32,7 @@ import lombok.With;
import java.sql.ResultSet ;
import java.sql.SQLException ;
import java.util.ArrayList ;
import java.util.HashMap ;
import java.util.List ;
import java.util.Map ;
import java.util.Set ;
import java.util.* ;
import java.util.function.Function ;
import java.util.stream.Collectors ;
import java.util.stream.Stream ;
@ -87,6 +83,35 @@ public class EntityRowMapperUnitTests {
@@ -87,6 +83,35 @@ public class EntityRowMapperUnitTests {
}
} ;
@Test // DATAJDBC-341
public void mapNotNeededValueTypePropertiesToNull ( ) throws SQLException {
ResultSet rs = mockResultSet ( singletonList ( "id" ) , //
ID_FOR_ENTITY_NOT_REFERENCING_MAP , "alpha" ) ;
rs . next ( ) ;
Trivial extracted = createRowMapper ( Trivial . class ) . mapRow ( rs , 1 ) ;
assertThat ( extracted ) //
. isNotNull ( ) //
. extracting ( e - > e . id , e - > e . name ) //
. containsExactly ( ID_FOR_ENTITY_NOT_REFERENCING_MAP , null ) ;
}
@Test // DATAJDBC-341
public void mapNotNeededPrimitiveTypePropertiesToNull ( ) throws SQLException {
ResultSet rs = mockResultSet ( singletonList ( "id" ) , //
ID_FOR_ENTITY_NOT_REFERENCING_MAP , "alpha" ) ;
rs . next ( ) ;
TrivialMapPropertiesToNullIfNotNeeded extracted = createRowMapper ( TrivialMapPropertiesToNullIfNotNeeded . class )
. mapRow ( rs , 1 ) ;
assertThat ( extracted ) //
. isNotNull ( ) //
. extracting ( e - > e . id , e - > e . age ) //
. containsExactly ( ID_FOR_ENTITY_NOT_REFERENCING_MAP , 0 ) ;
}
@Test // DATAJDBC-113
public void simpleEntitiesGetProperlyExtracted ( ) throws SQLException {
@ -477,6 +502,19 @@ public class EntityRowMapperUnitTests {
@@ -477,6 +502,19 @@ public class EntityRowMapperUnitTests {
String name ;
}
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@Getter
static class TrivialMapPropertiesToNullIfNotNeeded {
@Id Long id ;
int age ;
String phone ;
Boolean isSupreme ;
long referenceToCustomer ;
}
@EqualsAndHashCode
@NoArgsConstructor
@AllArgsConstructor
@ -762,11 +800,18 @@ public class EntityRowMapperUnitTests {
@@ -762,11 +800,18 @@ public class EntityRowMapperUnitTests {
return isAfterLast ( ) | | isBeforeFirst ( ) ? 0 : index + 1 ;
case "toString" :
return this . toString ( ) ;
case "findColumn" :
return isThereAColumnNamed ( invocation . getArgument ( 0 ) ) ;
default :
throw new OperationNotSupportedException ( invocation . getMethod ( ) . getName ( ) ) ;
}
}
private int isThereAColumnNamed ( String name ) {
Optional < Map < String , Object > > first = values . stream ( ) . filter ( s - > s . equals ( name ) ) . findFirst ( ) ;
return ( first . isPresent ( ) ) ? 1 : 0 ;
}
private boolean isAfterLast ( ) {
return index > = values . size ( ) & & ! values . isEmpty ( ) ;
}