我有一个具有主键和排序键的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的操作员的范围键