You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
DynamoDB Enhanced Client: @DynamoDbIgnore fails in some property mapping scenarios #7328
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.
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.
@hiroki-otaka thank you for reaching out. I can reproduce.
Yes, it looks like the root cause is how the Java Beans Introspector handles conflict when two read methods of a property exist, it gives isA() priority over getA() but because it's for a boolean type it doesn't recognize setA(int) as the property writer.
And I understand how this feels like a regression because the same class worked in v1 DynamoDB Mapper, but we don't classify differences between v1 and v2 as regressions. V2 is a new implementation, differences in behavior can happen and should be documented in the Dev Guide and Javadoc.
Tracking this as a bug. Not ideal, but the workaround is to rename isA() to something that doesn't conflict with the property name.
Activity
debora-ito commentedon Aug 27, 2026
@hiroki-otaka thank you for reaching out. I can reproduce.
Yes, it looks like the root cause is how the Java Beans Introspector handles conflict when two read methods of a property exist, it gives
isA()priority overgetA()but because it's for a boolean type it doesn't recognizesetA(int)as the property writer.And I understand how this feels like a regression because the same class worked in v1 DynamoDB Mapper, but we don't classify differences between v1 and v2 as regressions. V2 is a new implementation, differences in behavior can happen and should be documented in the Dev Guide and Javadoc.
Tracking this as a bug. Not ideal, but the workaround is to rename
isA()to something that doesn't conflict with the property name.IamPritamAcharya commentedon Sep 8, 2026
I reproduced this issue and opened #7356 with a fix and regression coverage for the conflicting getter case.