objectdb : perbarui kumpulan anak‹› dari induk setelah menghapus satu anak tidak berfungsi

Dalam aplikasi saya, saya memiliki dua entitas Orang dan Aktivitas

@Entity
public class Person
{
  .
  .
  .
  @OneToMany(cascade=CascadeType.ALL,fetch=FetchType.EAGER,orphanRemoval=true)
  Set<Activity> a;

  // getters setters constructors
}

... Dan...

@Entity
public class Activity
{
  .
  .
  .
  // getters setters constructors
}
  1. Pertama-tama saya membuat dua objek Aktivitas
  2. Saya menambahkan objek aktivitas ke objek Person
  3. Saya mempertahankan objek Person (kedua objek aktivitas tetap ada, berfungsi dengan baik)
  4. Lalu saya menghapus satu objek Aktivitas dari database saya
  5. Saya memilih objek Person saya dari database

Hasilnya adalah objek Person dengan Set<Activity> dengan size=2.

Bisakah seseorang membantu saya?


person user3543087    schedule 09.07.2014    source sumber


Jawaban (1)


Saat Anda menghapus objek Aktivitas dari database, Anda harus memperbarui kumpulan di Person dan menghapus objek Aktivitas tersebut juga dari kumpulan. Jika tidak, Anda akan memiliki referensi yang rusak ke objek Aktivitas yang tidak ada di set.

Di sisi lain, karena Anda mengaktifkan orphanRemoval, Anda cukup menghapus Aktivitas dari kumpulan di Person dan harus dihapus secara otomatis juga dari database.

Opsi lainnya adalah mendefinisikan himpunan sebagai mappedBy dan kemudian himpunan tersebut akan menjadi diperbarui secara otomatis ketika suatu Aktivitas dihapus dari database, ketika objek Person dimuat kembali dari database atau di-refresh.

person ObjectDB    schedule 11.07.2014
comment
tetapi bagaimana cara menambahkan mappedBy dengan asosiasi searah saya. karena set‹Person› di kelas Activity saya tidak membutuhkannya. - person user3543087; 13.07.2014
comment
Anda harus menambahkan referensi dari Aktivitas ke Orang. - person ObjectDB; 13.07.2014