Skip to content

findAllById return null with tableNameOverride #167

@Troshchuk

Description

@Troshchuk

If you have custom override table name you can't use findAllById method.

    @Value("${spring.profiles.active}")
    private String env;

    @Bean
    public DynamoDBMapperConfig dynamoDBMapperConfig() {
        // Create empty DynamoDBMapperConfig builder
        Builder builder = builder();
        // Inject the table name overrider bean
        builder.setTableNameOverride(TableNameOverride.withTableNamePrefix(env));
       
        builder.setTableNameResolver((clazz, config) -> clazz.getAnnotation(DynamoDBTable.class).tableName() + "_" + env);

        // Sadly this is a @deprecated method but new DynamoDBMapperConfig.Builder() is incomplete compared to DynamoDBMapperConfig.DEFAULT
        return new DynamoDBMapperConfig(DEFAULT, builder.build());
    }

Expected Behavior

DynamoDBTemplate.getOverriddenTableName called in findAllById method should resolve table name as tableName + '_' + env

Actual Behavior

DynamoDBTemplate.getOverriddenTableName called in findAllById method resolved as env + tableName

Steps to Reproduce the Problem

  1. Create bean DynamoDBMapperConfig as I describe above
  2. Create repository of some table
  3. Call findAllById with List of ids

Specifications

  • Spring Data DynamoDB Version: 5.0.2
  • Spring Data Version: 2.0.5.RELEASE
  • AWS SDK Version: 1.11.304
  • Java Version: 1.8.0_60 - Java HotSpot(TM) 64-Bit Server VM 25.60-b23
  • Platform Details: Mac OS X 10.13.2

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions