我在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)
非常感谢任何建议。