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();
}
}