Skip to content

Type Error 해결하기 ‐ @DynamoDBTyped

Lucy Oh edited this page Aug 10, 2023 · 1 revision

Resolving Type Error

Written By Jisoo Oh

문제 상황

테스트 데이터 저장과정에서 다음과 같은 에러가 발생함

  • 데이터 attribute 에는 List와 객체가 섞여있었는데 DynamoDB에 저장할 때 타입 에러가 나는 것이라고 생각함.
not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted: 
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException

저장하고자 했던 Entity

public class User extends BaseEntity {

    ...

    @DynamoDBAttribute
    @Getter
    @Setter
    private List<String> followingUserHandles = new ArrayList<>();

    @DynamoDBAttribute
    @Getter
    @Setter
    private List<String> followerUserHandles = new ArrayList<>();
    
    ...
}

해결 과정

@DynamoDBTyped

@DynamoDBTyped 애노테이션을 사용해서 DB에 저장될 때 Type을 명시할 수 있도록 작성해주었음!

(아래는 list이기 때문에 L Type을 사용해 주었으나, 다른 타입들은 다음과 같이 타입을 작성해주기!)

  • Object to M
  • Set to L
  • UUID to B
  • Enum to S
  • Boolean to N
  • Boolean to BOOL

Entity 코드 수정

public class User extends BaseEntity {

    ...

    @DynamoDBAttribute
    @Getter
    @Setter
    @DynamoDBTyped(DynamoDBAttributeType.L)
    private List<String> followingUserHandles = new ArrayList<>();

    @DynamoDBAttribute
    @Getter
    @Setter
    @DynamoDBTyped(DynamoDBAttributeType.L)
    private List<String> followerUserHandles = new ArrayList<>();
    
    ...
}

참고 자료

Clone this wiki locally