我将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);
}
如果您需要更多代码,请回复我。
答案 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-