2017-04-21 77 views
0

我有用Java編寫的與DynamoDB對話的Lambda函數。對於一個表,我必須將屬性的類型從普通整數更改爲自定義對象,我將在保存時將其轉換爲Set(DynamoDB SS數據類型)。但是由於該表中已經有文檔,所以在讀取該屬性時,該屬性可以具有整數(N)數據類型或SS數據類型。DynamoDBMapper轉換變量數據類型

我已經爲我的自定義對象實現了DynamoDBTypeConverter,CustomObject>的轉換器。爲了處理db數據類型可能是一個整數,我試着將其改爲DynamoDBTypeConverter,但不幸的是,似乎java sdk不允許dynamodb類型爲通用對象。

有沒有辦法用轉換器處理這些多種數據類型?我將不得不單獨轉換數據庫中的所有值嗎?或者我應該只使用一個全新的屬性並且不贊成使用舊的整數屬性?

回答

0

由於DynamoDBMapper顯式不允許轉換類型爲Object(如在com.amazonaws.services.dynamodbv2datamodeling.ConvertibleType.of(DynamoDBTypeConverter<?,T>)方法中所見),但Object是我需要處理的兩個類的唯一公共父項,所以我想不出任何方式來處理這通過反思。

相反,我只是使用DynamoDBTypeConverter,CustomObject>來轉換對象,但是在包含CustomObject(以前是int)的我的Model中,我使用@DynamoDBAttribute(attributeName="newAttName")將該字段指向數據庫中的其他屬性。這不幸意味着以前屬性中的所有數據都會丟失,但對我而言,這似乎是解決此問題的最有效方式。希望這可以幫助遇到這個問題的其他人。