java - 为什么spring data dynamodb返回一个带有空元素的列表而不是一个空列表?
问题描述
当我调用在 dynamo 中进行键搜索的存储库方法时:
"{"TableName":"music","Key":{"artist":{"S":"Henrique"},"title":{"S":"Quinta_de_sol1"}},"ConsistentRead":false}"
这是 aws 输出:
"{}"
当我调用另一个使用 sortKey 进行查找的方法时:
这被发送到 aws:
"{"TableName":"music","ConsistentRead":true,"KeyConditions":{"artist":{"AttributeValueList":[{"S":"Djavan"}],"ComparisonOperator":"EQ"},"title":{"AttributeValueList":[{"S":"Tempo"}],"ComparisonOperator":"BEGINS_WITH"}},"ScanIndexForward":true}"
这是回报:
"{"Count":0,"Items":[],"ScannedCount":0}"
重现问题的步骤
使用名为 Music 的实体
@DynamoDBTable(tableName = "music")
data class Music(
@get:DynamoDBHashKey(attributeName = "artist")
var artist: String? = null,
@get:DynamoDBRangeKey(attributeName = "title")
var title: String? = null,
var genre: String? = null
) {
@Id
private var id: MusicId? = null
get() = MusicId(artist, title)
}
@DynamoDBDocument
data class MusicId(
@field:DynamoDBHashKey(attributeName = "artist")
var artist: String? = null,
@field:DynamoDBRangeKey(attributeName = "title")
var title: String? = null
) : Serializable
和一个存储库
interface MusicRepository : CrudRepository<Music, MusicId> {
fun findByArtistAndTitle(artist: String, title: String): List<Music>
fun findByArtistAndTitleStartingWith(artista: String, sortKey: String): List<Music>
}
当我调用时:
@PostConstruct
fun init() {
println(musicRepository.findByArtistAndTitleStartingWith("Djavan", "Eu te devoro").joinToString())
}
规格
- 库:https ://github.com/boostchicken/spring-data-dynamodb
- Spring Data DynamoDB 版本:5.2.5
- Spring Data 版本:未使用
- Spring Boot Starter Web 版本:2.3.4.RELEASE
- AWS 开发工具包版本:1.11.573
- Java 版本:11
- 平台详细信息:Windows
有人知道是否有一种干净的方法来保证 dynamo repo 永远不会返回一个只接受非空元素和空元素的列表?
解决方案
要编写调用 Amazon DynamoDB 的 Spring 应用程序,请考虑在 Spring 项目中使用官方 Amazon DynamoDB Java V2 API 和增强客户端。
如果您不熟悉 AWS SDK for Java V2,请参阅此快速入门。
推荐阅读
- amazon-web-services - 当我为 AWS EC2 运行 yum update 以安装 jenkins 时,如何解决错误 Public key for jenkins-2.238-1.1.noarch.rpm is not installed
- dart - 在加密器中使用 £ 符号有什么问题?
- r - := 在多个环境中分配
- laravel - 如果键值相同,如何合并 laravel 集合?或添加新的数据行
- java - 无法解决 org.apache.hadoop:hadoop-aws:2.7.6 的依赖关系
- c# - MailKit smtp.office365.com 特殊字符编码问题
- php - Debian9 上的 apache2 error.log 中没有出现 500 错误
- python - 如何在 Heroku 上上传 python 模块
- c# - 如何使用封闭的 xml 比较列值?
- ios - InsertRows to UITableView swift 4 有错误:我的最后一行从上到下滚动