menjalankan tes tambahan untuk memeriksa logika persisten koleksi Reaktif terbaru dari perubahan @OrderColumn #581 . Mengalami masalah saat menghapus lebih dari 1 elemen selama flush().
Lihat: TestedEmbeddableCollectionTest
Pengecualian: [Pengecualian 0] io.vertx.core.impl.NoStackTraceThrowable: Jumlah parameter yang akan dieksekusi harus konsisten dengan jumlah parameter yang diharapkan = [2] tetapi jumlah sebenarnya adalah [3].
[Pengecualian 1] io.vertx.core.VertxException: Transaksi sudah selesai
Tampaknya array Object[] dari nilai param mengembalikan Object[3] alih-alih Object[2] untuk elemen kedua yang dihapus dalam persisten abstrak baru: https://github.com/hibernate/hibernate-reactive/blob/ fe9dfbaa07e4b71fe85e949a45ac23c91c26709b/hibernate-reactive-core/src/main/Java/org/hibernate/reactive/persister/collection/impl/ReactiveAbstractCollectionPersister.java#L237
Mungkin layak untuk mendapatkan tes yang bekerja pada inti Hibernate ORM, hanya untuk dapat melangkah dan melihat apa yang terjadi di sana.
Dalam deleteRows
ORM int offset = 1;
tidak pernah berubah.
Di Reactive, kami meneruskan offset ke panggilan deleteRowsParamValues( entry, index+1, id, session )
, yang didasarkan pada nilai index
bertambah. Sepertinya kita salah menggabungkan konsep i
, index
, loc
dan offset
di ORM.
Nilai i
tampaknya menyediakan metode pembaruan dan penyisipan untuk mengetahui entri koleksi mana yang sedang dioperasikan, sehingga tidak boleh dikaitkan dengan/digunakan dalam proses penghapusan.
Yup, sepertinya logikanya salah porting.
Saya pikir hanya mengubah index+1"
menjadi 1
mencerminkan logika ORM
Besar!
Tangkapan yang bagus!
@blafond : Saya telah menetapkan ini kepada Anda karena sepertinya Anda sudah memperbaikinya
Terima kasih, @blafond