Spring 写入Dynamo表工作正常,但读取会引发DynamoDBMappingException

Spring 写入Dynamo表工作正常,但读取会引发DynamoDBMappingException,spring,amazon-dynamodb,Spring,Amazon Dynamodb,执行orderRequestDao.save(新的OrderRequest(“5000”,“body”))在Dynamo中成功放置记录。任何读取尝试都会返回: [Request processing failed; nested exception is com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException: could not invoke null on class com.cfa.fulfillme

执行
orderRequestDao.save(新的OrderRequest(“5000”,“body”))在Dynamo中成功放置记录。任何读取尝试都会返回:

[Request processing failed; nested exception is com.amazonaws.services.dynamodbv2.datamodeling.DynamoDBMappingException:
could not invoke null on class 
com.cfa.fulfillmentApi.model.OrderRequest 
with value 100 of type class java.lang.String] with root cause
(存在id为100的记录)

我正在使用以下JAR(aws.sdk.version:1.11.86):

域对象:

@DynamoDBTable(tableName = "dev_transx")
public class OrderRequest {

    private String id;
    private String body;

    public OrderRequest(String id, String body) {
        this.id = id;
        this.body = body;
    }

    public OrderRequest() {}

    @DynamoDBHashKey
    public String getId()
    {
        return id;
    }

    @DynamoDBAttribute
    public String getBody()
    {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    @Override
    public String toString() {
        return String.format(
                "Customer[id=%d, body='%s']",
                id, body);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }

}

我尝试了域类中id的几乎所有数据类型,但没有成功。

我删除了
aws java sdk dynamodb
,因为它已经在
spring data dynamodb


最重要的是,我在域类中为ID添加了一个setter。

为字段添加一个setter方法非常有效

@EnableScan
public interface OrderRequestDao extends CrudRepository<OrderRequest, String> {
    OrderRequest findOne(String s);
    OrderRequest save(OrderRequest or);
}
@DynamoDBTable(tableName = "dev_transx")
public class OrderRequest {

    private String id;
    private String body;

    public OrderRequest(String id, String body) {
        this.id = id;
        this.body = body;
    }

    public OrderRequest() {}

    @DynamoDBHashKey
    public String getId()
    {
        return id;
    }

    @DynamoDBAttribute
    public String getBody()
    {
        return body;
    }

    public void setBody(String body) {
        this.body = body;
    }

    @Override
    public String toString() {
        return String.format(
                "Customer[id=%d, body='%s']",
                id, body);
    }

    @Override
    public int hashCode() {
        return id.hashCode();
    }

}