數據REST和dynamoDB並試圖如下排序我的GSI的對象,是有可能在dynamoDB排序GSI Hashkey, 域類如何排序的全球次級索引DynamoDB
@DynamoDBTable(tableName = "test")
public class Test implements Serializable{
private static final long serialVersionUID = 1L;
private String id;
private String name;
private String desc;
@DynamoDBHashKey(attributeName="id")
@DynamoDBAutoGeneratedKey
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@DynamoDBIndexHashKey(attributeName="name")
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@DynamoDBAttribute(attributeName="desc")
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
public interface TestRepository extends PagingAndSortingRepository{
@EnableScan
@EnableScanCount
public Page<Test> findByName(@Param("name") String name, Pageable pageable);
public Page<Test> findByNameOrderByNameAsc(@Param("name") String name, Pageable pageable);
}
是否有可能在二級索引上使用orderBy,因爲我正在使用自動生成的hashkey,因此無法與帶有Range鍵的hashkey屬性組合以獲取所有可能的結果。我需要獲取滿足搜索和orderBy名稱(GSI)的名稱。否則DynamoDB僅支持通過hashkey和範圍鍵(如Demo中的orderBy)?
當我這樣做得到一個異常爲「無法使用orderBy掃描查詢」。
更新:使用 上午春數據DynamoDB,我已經創建了名爲「描述名稱索引」一GSI的哈希和密鑰索引中DynamoDB和我喜歡湊findBy使用範圍關鍵的數據進行排序鍵。這裏是我的測試代碼, 域類
@DynamoDBTable(tableName = "test")
public class Test implements Serializable{
private static final long serialVersionUID = 1L;
private String id;
private String description;
private String name;
@DynamoDBIndexHashKey(attributeName="description")
public String getDescription() {
return tesId;
}
public void setDescription(String description) {
this.setDescription(description);;
}
@DynamoDBIndexRangeKey(attributeName="name")
public String getName() {
return name;
}
public void setName(String name) {
this.setName(name);
}
@DynamoDBHashKey(attributeName="id")
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
,並試圖獲取並使用排序數據findByDescriptionOrderByNameDesc(@Param("decription") String description, Pageable pageable)
,也是我妄圖利用@Id
,放在索引散列和類範圍的關鍵,但所有。我得到500 Internal Error
,但不會拋出任何消息。有什麼方法可以使用GSI散列和範圍對並對它們進行排序。
這裏有GSI鍵進行排序或排序在Java迭代器掃描輸出是不錯的選擇。我應該去哪一個,哪一個會有效呢? – jAddict
我建議對掃描輸出進行排序,因爲它更直接,不易出錯 –