Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

391
Vistas
Transacciones de DynamoDB: escribir en diferentes tablas con nombres dinámicos

Estoy tratando de usar escrituras transaccionales para DynamoDB en Kotlin.

Caso de uso: quiero escribir dos objetos diferentes en dos tablas diferentes en la misma transacción. Por ejemplo: escriba AClass en la Tabla 1 y escriba BClass en la Tabla 2.

Esto hubiera sido sencillo si los nombres de Table1 y Table2 fueran los mismos para cada escenario.

Sin embargo, estoy usando un marco sin servidor y, según la etapa que se haya especificado,

Table1 puede ser: local-Table1 / dev-Table1 / production-Table1 .

Lo mismo para Table2

Sin embargo, en mi declaración de clase de AClass , si trato de anotar AClass mediante @DynamoDBTable(tableName = "$stage-Table1") , aparece el error Un argumento de anotación debe ser una constante de tiempo de compilación .

Esto significa que el nombre de la tabla debe proporcionarse por separado en el flujo. Para superar esto en los escenarios habituales de escritura/obtención, estaba usando la siguiente configuración:

 private val dynamoDBMapperConfig = DynamoDBMapperConfig.Builder() .withTableNameOverride(DynamoDBMapperConfig.TableNameOverride.withTableNameReplacement(tableName)) .build() mapper.save(t, dynamoDBMapperConfig)

Según la documentación, tendré que hacer lo siguiente:

 TransactionWriteRequest transactionWriteRequest = new TransactionWriteRequest() transactionWriteRequest.addPut(aClassObject) transactionWriteRequest.addPut(bClassObject) mapper.transactionWrite(transactionWriteRequest)

Si los objetos de AClass y BClass se escribieran en la misma tabla, podría haber usado de nuevo un DynamoDBMapperConfig personalizado. Sin embargo, ambos objetos deben escribirse en dos tablas diferentes y, dado que los nombres de las tablas deben resolverse durante el tiempo de ejecución, no puedo proporcionarlos como parte de las anotaciones de clase.

¿Cómo resuelvo esto? (Quiero usar el mapeador de objetos)

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Estoy usando un asignador de DynamoDB personalizado para cambiar el nombre de la tabla en tiempo de ejecución, ya que el nombre de la tabla es diferente en cada entorno.

Mesa:

 @DynamoDBTable(tableName="dummy-table-Name") public class DynamoTable

Asignador personalizado para el nombre de la tabla dinámica :

 DynamoDBMapperConfig.TableNameOverride tableNameOverriderride = new DynamoDBMapperConfig.TableNameOverride("DYNAMIC_TABLE_NAME"); DynamoDBMapperConfig config =new DynamoDBMapperConfig(tableNameOverriderride); DynamoDBMapper mapper =new DynamoDBMapper(client, config);

Realice la operación CRUD utilizando el mapeador anterior:

 DynamoTable dynamoTable = mapper.load(DynamoTable.class, id); mapper.save(dynamoTable);
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda