DynamoDB排序不可能吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DynamoDB排序不可能吗?相关的知识,希望对你有一定的参考价值。

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

正常的findAll()是有效的。 Pageable也是有效的。

但是当我插入排序值时,它不是一项工作。我试图使用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);

}

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

答案

首先,如果您尝试基于范围键进行排序,请设置排序键。排序键的注释是@DynamoDBRangeKey。所以将课程改为以下

公共类EntityName实现Serializable {

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-

以上是关于DynamoDB排序不可能吗?的主要内容,如果未能解决你的问题,请参考以下文章

DynamoDB GSI - 仅包含一些行

对DynamoDB数据进行排序

Dynamodb,你如何查询一切并利用排序键

在 Amazon Dynamodb 中按动态值排序?

使用分区键和特定排序键列表查询DynamoDB

我们可以更新 DynamoDB 表的现有全局二级索引的投影吗?