๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐ŸŒฟ Spring/Spring Data DynamoDB

[Spring Data DynamoDB] Type Error ํ•ด๊ฒฐํ•˜๊ธฐ โ€ @DynamoDBTyped

by Lucy Oh 2024. 8. 3.

๋ฌธ์ œ ์ƒํ™ฉ

๋ฐ์ดํ„ฐ ์ €์žฅ๊ณผ์ •์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ attribute์˜ ํƒ€์ž…์„ ์ •ํ™•ํ•˜๊ฒŒ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•„, ์ €์žฅ๊ณผ์ •์—์„œ ํƒ€์ž… ์—๋Ÿฌ๊ฐ€ ๋‚˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

not supported; requires @DynamoDBTyped or @DynamoDBTypeConverted: 
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException

 

์ €์žฅํ•˜๊ณ ์ž ํ–ˆ๋˜ Entity ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. 

followingUserHandles์™€ followerUserHandles ์ €์žฅ๊ณผ์ •์—์„œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

public class User extends BaseEntity {

    ...

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

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

 

ํ•ด๊ฒฐ ๊ณผ์ •

@DynamoDBTyped ์• ๋…ธํ…Œ์ด์…˜์„ ์‚ฌ์šฉํ•ด์„œ DB์— ์ €์žฅ๋  ๋•Œ Type์„ ๋ช…์‹œํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•ด์ฃผ์–ด ํ•ด๊ฒฐํ•˜์˜€์Šต๋‹ˆ๋‹ค

 

(์•„๋ž˜๋Š” list์ด๊ธฐ ๋•Œ๋ฌธ์— L Type์„ ์‚ฌ์šฉํ•ด ์ฃผ์—ˆ์œผ๋‚˜, ๋‹ค๋ฅธ ํƒ€์ž…๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํƒ€์ž…์„ ์ž‘์„ฑํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค!)

 

์ฐธ๊ณ ์ž๋ฃŒ: DynamoDBTyped

  • Object to M
  • Set to L
  • UUID to B
  • Enum to S
  • Boolean to N
  • Boolean to BOOL
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<>();
    
    ...
}

 

 

๋Œ“๊ธ€