Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

700
Visualizações
BigDecimal se almacena en una cadena en Spring Data MongoDB
@Document(collection = "loanDetails") class LoanDetails { @Transient public static final String COLLECTION_NAME = "loanDetails @Id String id String loanId String loanUUID String loanStatus Date loanDateCreated Date loanLastUpdated BigDecimal loanAmount //Stores in String }

Declaré una clase Detalles de Préstamo y un campo con tipo BigDecimal cantidad de préstamo en él Cada vez que guardé algunos datos en esta colección

  1. Se almacena como una cadena en la base de datos mongo db
  2. al obtener los registros de la base de datos, aparece el error Error al decodificar 'LoandDetails'. Error al decodificar 'loanAmount' con: readDecimal solo se puede llamar cuando CurrentBSONType es DECIMAL128, no cuando CurrentBSONType es STRING.

Intenté agregar una anotación sobre el campo monto del préstamo

 @Field(targetType = Decimal128) // This also throws error does not contain targetType attribute attached screenshot for the same BigDecimal loanAmount

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Probablemente, deba eliminar/migrar sus detalles de loanDetails ya creados, ya que el campo loanAmount de préstamo se mantiene como String .

Al agregar @Field(targetType = FieldType.DECIMAL128) a su campo de cantidad de loanAmount , debería funcionar.

 import org.springframework.data.mongodb.core.mapping.FieldType; ... @Field(targetType = FieldType.DECIMAL128) BigDecimal loanAmount; ... public LoanDetails() { loanAmount = new BigDecimal(21.905334472656250); } ... template.save(loan); template.find(new Query(), org.bson.Document.class, "loanDetails").forEach(l -> { System.out.println(l.get("loanAmount").getClass().getName() + " " + l.get("loanAmount")); }); //org.bson.types.Decimal128 21.90533447265625 template.findAll(LoanDetails.class).forEach(l -> { System.out.println(l.loanAmount.getClass().getName() + " " + l.loanAmount); }); //java.math.BigDecimal 21.90533447265625

Si obtiene Conversion to Decimal128 would require inexact rounding of XXX

Nota: El tipo Decimal128 solo admite hasta 34 dígitos de precisión. (Generalmente, "precisión" = número total de dígitos, mientras que "escala" = número de dígitos decimales). Mientras que un Java BigDecimal puede ir más alto. Entonces, antes de guardar en la base de datos, debe redondear el valor BigDecimal (por ejemplo, use BigDecimal.setScale() ).

Problema BigDecimalConverter | decimal128

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda