Аннотация DynamoDbSecondaryPartitionKey в AWS SDK v2 игнорируется в КотлинеJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Аннотация DynamoDbSecondaryPartitionKey в AWS SDK v2 игнорируется в Котлине

Сообщение Anonymous »

Используя Spring Boot, DynamoDbenSanceNcClient из V2 AWS Java SDK и DynamoDB, работающих с использованием TestContainers и LocalStack, я не могу получить таблицу от клиента с вторичным индексом, как указано в моем классе данных Dynamo DB Bean Data. Все, что написано в Kotlin. < /P>
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»