在Scala中创建自定义DynamoDBMarshaller

时间:2016-04-25 08:32:13

标签: java json scala amazon-web-services amazon-dynamodb

我在scala项目中使用AWS DynamoDB。我想写一个自定义DynamoDBMapper(也在scala中)。似乎自定义映射器必须等同于java static public class

但是,如果我将它实现为scala对象;通过以下方式将映射添加到注释: @DynamoDBMarshalling(marshallerClass = classOf[MyDynamoDBConverter])

导致错误: not found: type MyDynamoDBConverter

@DynamoDBMarshalling(marshallerClass = MyDynamoDBConverter.getClass)

导致错误:annotation argument needs to be a constant; found: MyDynamoDBConverter.getClass()

@DynamoDBMarshalling(marshallerClass = classOf[MyDynamoDBConverter.type])

导致错误:class type required but MyDynamoDBConverter.type found

将mapper实现为类会导致运行时异常:

Cannot marshall type class MyCaseClass without a custom marshaler or @DynamoDBDocument annotation.
com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: Cannot marshall type class MyCaseClass without a custom marshaler or @DynamoDBDocument annotation.
    at com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.getObjectToMapMarshaller(ConversionSchemas.java:390)
    at com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.augment(ConversionSchemas.java:319)
    at com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.getMarshaller(ConversionSchemas.java:293)
    at com.amazonaws.services.dynamodbv2.datamodeling.ConversionSchemas$StandardItemConverter.convert(ConversionSchemas.java:258)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper$SaveObjectHandler.execute(DynamoDBMapper.java:962)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:824)
    at com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMapper.save(DynamoDBMapper.java:669)

非常感谢任何建议。

0 个答案:

没有答案