如何在DynamoDB中使用Spring Data Repository查询

时间:2019-05-27 10:02:59

标签: spring-boot spring-data-jpa spring-data amazon-dynamodb

我有一个具有主键和排序键的DynamoDB。我的实体映射如下所示

@Data
@AllArgsConstructor
@NoArgsConstructor
public class MeasurmentId implements Serializable {

    @DynamoDBHashKey
    private String externalId;
    @DynamoDBRangeKey
    private Long timestamp;   
}

@DynamoDBTable(tableName = "dbTable")
@Data
public class Measurment {

    @Id
    private MeasurmentId id;


    public void setExternalId(String externalId) {
        if (id == null) {
            id = new MeasurmentId();
        }
        id.setExternalId(externalId);
        this.externalId = externalId;
    }

    public void setTimestamp(Long timestamp) {
        if (id == null) {
            id = new MeasurmentId();
        }
        id.setTimestamp(timestamp);
        this.timestamp = timestamp;
    }

}

使用此映射时,如何使用Spring Data Repository以及基于方法名称创建查询存在问题。我需要按externalId和Timestam进行搜索,但是当我创建这样的查询

List<Measurment> findById_ExternalIdAndId_Timestamp(String externalId,Long timestamp);

无法正常工作,并且使用空指针接收堆栈堆栈

仅当我通过 MeasurmentId 类进行搜索时,此方法才有效

MeasurementRepository.findById(new MeasurmentId(id, 1555419600L));

但是我需要在运算符“ Beetwen / After / Before”中使用 timestamp ,所以我的问题是,当我可以使用哈希键时,如何使用(方法名称或其他方式)创建查询使用Spring Data Repositories的操作员的范围键

0 个答案:

没有答案