У меня есть 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 и созданием запросов на основе имен методов.Мне нужно искать по externalId и по временной шкале, но когда я создаю запрос вроде этого
List<Measurment> findById_ExternalIdAndId_Timestamp(String externalId,Long timestamp);
Не работает и получаю стек с нулевым указателем
Это работает только при поиске по MeasurmentId class например,
MeasurementRepository.findById(new MeasurmentId(id, 1555419600L));
Но мне нужно использовать timestamp с оператором «Beetwen / After / Before», поэтому мой вопрос заключается в том, как создать запрос с помощью (методаимена или иным способом) когда я могу использовать Hash Key и Range key с оператором, используя Spring Data Repositories