追加のテストを実行して、 @ OrderColumn #581の変更から最新のリアクティブコレクション永続ロジックを確認します。 flush()中に複数の要素を削除する際に問題が発生しました。
参照: OrderedEmbeddableCollectionTest
例外:[例外0] io.vertx.core.impl.NoStackTraceThrowable:実行するパラメーターの数は、予想されるパラメーターの数= [2]と一致している必要がありますが、実際の数は[3]です。
[例外1] io.vertx.core.VertxException:トランザクションはすでに完了しています
param値のObject []配列が、新しい抽象パーシスターの2番目に削除された要素に対してObject [2]ではなくObject [3]を返しているようです: //github.com/hibernate/hibernate-reactive/blob/ fe9dfbaa07e4b71fe85e949a45ac23c91c26709b / hibernate-reactive-core / src / main / java / org / hibernate / react / persister / collection / impl / ReactiveAbstractCollectionPersister.java#L237
ステップスルーしてそこで何が起こるかを確認できるようにするために、HibernateORMコアでテストを機能させる価値があるかもしれません。
ORMのdeleteRows
では、 int offset = 1;
は変更されません。
Reactiveでは、増分されたindex
値に基づいて、オフセットをdeleteRowsParamValues( entry, index+1, id, session )
呼び出しに渡します。 ORMでi
、 index
、 loc
、 offset
の概念を誤って組み合わせているようです。
i
値は、どのコレクションエントリが操作されているかを知るための更新メソッドと挿入メソッドを提供するように見えるため、削除プロセスに関連付けたり使用したりしないでください。
うん、ロジックが間違って移植されているようだ。
index+1"
を1
変更するだけで、ORMロジックが反映されると思います
素晴らしい!
いいキャッチ!
@blafond :すでに修正されているようですので、これを割り当てました
ありがとう、@ blafond