Hibernate-reactive: Exceção que remove vários elementos da coleção incorporável ordenada

Criado em 22 fev. 2021  ·  7Comentários  ·  Fonte: hibernate/hibernate-reactive

executando testes adicionais para verificar a lógica persistente da coleção reativa mais recente das alterações de @OrderColumn # 581 . Tive um problema ao remover mais de 1 elemento durante um flush ().

Veja: OrderedEmbeddableCollectionTest

Exceção: [Exceção 0] io.vertx.core.impl.NoStackTraceThrowable: O número de parâmetros a serem executados deve ser consistente com o número esperado de parâmetros = [2], mas o número real é [3].
[Exceção 1] io.vertx.core.VertxException: Transação já concluída

Parece que a matriz Object [] de valores de parâmetros está retornando um Object [3] em vez de Object [2] para o segundo elemento excluído no novo persister abstrato: https://github.com/hibernate/hibernate-reactive/blob/ fe9dfbaa07e4b71fe85e949a45ac23c91c26709b / hibernate-reactive-core / src / main / java / org / hibernate / reactive / persister / collection / impl / ReactiveAbstractCollectionPersister.java # L237

bug

Todos 7 comentários

Pode valer a pena fazer o teste funcionar no núcleo ORM do Hibernate, apenas para poder percorrer e ver o que acontece lá.

No deleteRows do ORM, o int offset = 1; nunca muda.

Em reativo, estamos passando o deslocamento para a chamada deleteRowsParamValues( entry, index+1, id, session ) , que é baseada em um index incrementado de i , index , loc e offset no ORM.

O i parece fornecer métodos de atualização e inserção para saber qual entrada da coleção está sendo operada, portanto, não deve ser vinculado a / usado no processo de exclusão.

Sim, parece que a lógica foi apenas portada de forma errada.

Acho que apenas mudar index+1" para 1 reflete a lógica ORM

Excelente!

Boa pegada!

@blafond : Eu atribuí isso a você porque parece que você já corrigiu

Obrigado, @blafond

Esta página foi útil?
0 / 5 - 0 avaliações