Skip to content

DynamoDB Enhanced Client: @DynamoDbIgnore fails in some property mapping scenarios #7328

Description

@hiroki-otaka

Describe the bug

The DynamoDB Enhanced Client fails to recognize a valid setter when a bean has both getA() and isA() methods, even when isA() is annotated with @DynamoDbIgnore.

Regression Issue

  • Select this option if this issue appears to be a regression.

Expected Behavior

a should be mapped using:

getA(): int
setA(int): void

and isA() should be ignored because of @DynamoDbIgnore.

Current Behavior

The setA(int) setter is not recognized, and the a attribute is not mapped correctly.

This appears to be caused by the interaction between JavaBeans property introspection and the two getters:

getA(): int
isA(): boolean

Even though isA() is annotated with @DynamoDbIgnore, it still affects property discovery.

Reproduction Steps

@DynamoDbBean
public class Foo {
    private int a;

    @DynamoDbAttribute("A")
    public int getA() {
        return a;
    }

    public void setA(int a) {
        this.a = a;
    }

    @DynamoDbIgnore
    public boolean isA() {
        return false;
    }
}

Possible Solution

No response

Additional Information/Context

The same class is mapped correctly by the AWS SDK for Java v1, which does not rely on the same JavaBeans property conventions as the v2 Enhanced Client.

AWS Java SDK version used

2.51.3

JDK version used

11.0.32.1

Operating System and version

Windows 11

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugThis issue is a bug.needs-triageThis issue or PR still needs to be triaged.potential-regressionMarking this issue as a potential regression to be checked by team member

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions