DynamoDB无法排序吗?

时间:2019-04-18 11:48:13

标签: amazon-web-services spring-data amazon-dynamodb

我将DynamoDB与Spring-boot连接起来。

正常的findAll()是有效的。 分页也是工作。

但是当我插入排序值时,这不是工作。 而且我尝试使用findAllByOrderByBn()方法。

这是我的表格信息。 分区键(哈希键)是id。 排序键(范围键)为bn。

如何排序?

@Data
@DynamoDBTable(tableName = "tableName")
public class EntityName implements Serializable {

    private static final long serialVersionUID = 1L;

    @Id
    @DynamoDBHashKey
    @DynamoDBAutoGeneratedKey
    private String id;

    @DynamoDBAttribute private String bn;
    @DynamoDBAttribute private String fr;      // from
    @DynamoDBAttribute private String to;      // to

}



@EnableScan
@EnableScanCount
//public interface RepositoryName extends CrudRepository<EntityName, String> {
public interface EthereumTransactionRepository extends PagingAndSortingRepository<EntityName, String> {

    /* Find */
    Page<EntityName> findAll(Pageable pageable);
    Page<EntityName> findByFrAndToBeforeOrderByBnDesc(String fr, String to, Pageable pageable);

}

如果您需要更多代码,请回复我。

1 个答案:

答案 0 :(得分:0)

首先,如果要基于范围键进行排序,请设置排序键。排序键的注释是@DynamoDBRangeKey。因此,将类更改为以下

公共类EntityName实现可序列化的{

private static final long serialVersionUID = 1L;

@Id
@DynamoDBHashKey
@DynamoDBAutoGeneratedKey
private String id;

@DynamoDBRangeKey private String bn;
@DynamoDBAttribute private String fr;      // from
@DynamoDBAttribute private String to;      // to

如果您想按升序还是降序排序,也可以参考以下文档:https://docs.aws.amazon.com/AWSJavaSDK/latest/javadoc/com/amazonaws/services/dynamodbv2/datamodeling/DynamoDBQueryExpression.html#withScanIndexForward-boolean-