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

885
Visualizações
Usando CrudRepository.save (Entidad) para insertar una Entidad con un campo @ID predefinido usando spring-data-jdbc

Estoy usando CrudRepository.save(Entity) para insertar una Entidad con @ID ya poblada.

Recibo la siguiente excepción.

 Caused by: org.springframework.dao.IncorrectUpdateSemanticsDataAccessException: Failed to update entity [com.comanyname.repository.Entiy.class]. Id [ed384316-9c22-4b63-90fd-ec02fdac2b86] not found in database.

Puedo entender el problema ya que el campo @ID ya está lleno, AggregateChangeExecutor aquí está tratando esta acción como DbAction.Update.

Entonces, quería saber si hay alguna forma en que pueda usar CrudRepository.save(Entity) para insertar una nueva entidad con un campo @ID predefinido, ya que quería usar el gancho @DomainEvent en CrudRepository.save (Entidad).

Siento que esto es un error en spring-data-jdbc . Solo quería una opinión/solución aquí.

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

0

De acuerdo con Spring Data Refrence Documentation , el JPA EntiyManager subyacente utiliza tres estrategias para determinar si una entidad es nueva:

  1. Inspección de propiedad de versión e Id-propiedad (predeterminada): por defecto, Spring Data JPA inspecciona primero si hay una propiedad de versión de tipo no primitivo. Si existe la entidad se considera nueva si el valor es null . Sin tal propiedad de versión, Spring Data JPA inspecciona la propiedad del identificador de la entidad dada. Si la propiedad del identificador es null , se supone que la entidad es nueva. De lo contrario, se supone que no es nuevo.

  2. Implementación de Persistable : si una entidad implementa Persistable , Spring Data JPA delega la nueva detección al método isNew(…) de la entidad. Vea el JavaDoc para más detalles.

  3. Implementación EntityInformation : puede personalizar la abstracción de EntityInformation utilizada en la implementación de SimpleJpaRepository creando una subclase de JpaRepositoryFactory y anulando el getEntityInformation(…) consecuencia. Luego debe registrar la implementación personalizada de JpaRepositoryFactory como un bean Spring. Tenga en cuenta que esto rara vez debería ser necesario. Vea el JavaDoc para más detalles.

En tu caso, usar la segunda estrategia podría ser la más útil. Espero eso ayude.

Editar

Se me señaló que la pregunta no era sobre JPA, sino sobre spring-data-jdbc. Esto es correcto pero no cambia la respuesta ya que el mismo comportamiento está documentado en Spring Data JDBC-Reference Documentation .

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