bean: < /p>
Код: Выделить всё
@DynamoDbBean
data class MyEntity (
@get:DynamoDbPartitionKey
@get:DynamoDbAttribute("entityId")
var entityId: String = "",
@get:DynamoDbAttribute("customerId")
@get:DynamoDbSecondaryPartitionKey(indexNames = ["CustomerIdIndex"])
val customerId: String = "",
@get:DynamoDbSecondarySortKey(indexNames = ["CustomerIdIndex"])
@get:DynamoDbAttribute("createdAt")
val createdAt: LocalDateTime = LocalDateTime.now()
) {
companion object {
val tableName: String = "my-entity"
}
@Repository
class MyEntityRepository(client: DynamoDbEnhancedAsyncClient) {
companion object {
private val tableSchema = TableSchema.fromBean(MyEntity::class.java)
private val tableName = MyEntity::class.java.simpleName
}
private val table = client.table(tableName, tableSchema)
override suspend fun findByCustomerId(customerId: String): Flow {
val conditional: QueryConditional = QueryConditional.keyEqualTo(
Key.builder()
.partitionValue(customerId)
.build()
)
val request = QueryEnhancedRequest.builder()
.queryConditional(conditional)
.scanIndexForward(false)
.build()
val queryPublisher: SdkPublisher
> = table
.index("CustomerIdIndex")
.query(request)
}
}
< /code>
Запрос на основной работы с ключами раздела. Однако, когда код выше пытается запросить GSI, я получаю сообщение об ошибке: < /p>
Попытка выполнить операцию, которая требует вторичного индекса без определения индекса Атрибуты в метаданных таблица. Имя индекса: CustomerIdindex < /p>
Java.lang.illegalargumentException: Попытка выполнить операцию, которая требует вторичного индекса без определения атрибутов индекса в метаданных таблицы. Имя индекса: CustomerIdIndex
at software.amazon.awssdk.enhanced.dynamodb.mapper.statictablemetadata.getindex (statictablemetadata.java:150)
Если я отлаживаю код, глядя на переменную таблицы, я действительно вижу, что клиент DynamoDB не поднял вторичный индекс, как показано здесь: < /p>
Так что мне кажется, что аннотации В классе данных Бин для вторичного индекса не поднимается. Я изо всех сил пытаюсь найти причину.>
Подробнее здесь: https://stackoverflow.com/questions/765 ... -in-kotlin
Мобильная версия