执行orderRequestDao.save(new 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
(记录身份:100存在)
我正在使用以下jar(aws.sdk.version:1.11.86):
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-core</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-dynamodb</artifactId>
<version>${aws.sdk.version}</version>
</dependency>
<dependency>
<groupId>com.github.derjust</groupId>
<artifactId>spring-data-dynamodb</artifactId>
<version>4.4.1</version>
</dependency>
DyamoDb config:
主分区键:id (String)
道:
@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();
}
}
我在域类中尝试了id的每种数据类型,但没有运气。
答案 0 :(得分:3)
我已移除aws-java-sdk-dynamodb
,因为它已在spring-data-dynamodb
最重要的是,我在域类中添加了ID的setter。
答案 1 :(得分:2)
为该字段添加setter方法就像一个超级魅力