Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Batasi ukuran koleksi di JPA

Saya akan menggunakan kode untuk menegakkan aturan ini secara manual. Ide utamanya adalah bahwa koleksi B harus dienkapsulasi dengan baik sehingga klien hanya dapat mengubah kontennya dengan metode publik (yaitu addB() ) . Cukup pastikan aturan ini di dalam metode ini (addB() ) untuk memastikan bahwa jumlah entri di dalam koleksi B tidak boleh lebih dari satu nilai.

J:

@Entity
public class A {


    public static int MAX_NUM_B = 4;

    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<B> b= new LinkedHashSet<B>();

    public void addB(B b) {
        if (this.b.size() == MAX_NUM_B) {
            Iterator<B> it = this.b.iterator();
            it.next();
            it.remove();
        }
        this.b.add(b);
    }

    public Set<B> getB() {
        return Collections.unmodifiableSet(this.b);
    }
}

B:

@Entity 
public class B{

    @ManyToOne
    private A a;
}

Poin utama:

  • A harus menjadi pemilik hubungan.
  • Dalam A , jangan hanya mengembalikan B karena klien dapat melewati logika pemeriksaan yang diterapkan di addB(B b) dan ubah kontennya secara bebas. Sebagai gantinya, kembalikan tampilan B yang tidak dapat dimodifikasi.
  • Di @OneToMany , setel orphanRemoval to true untuk memberi tahu JPA untuk menghapus catatan DB B setelah instance yang sesuai dihapus dari koleksi B.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. kesalahan sintaks untuk deklarasi variabel mysql

  2. server WAMP. Direktori data yang sangat besar di MySQL?

  3. Apa sajakah semua operator SQL di Laravel itu?

  4. Hubungkan ke mysql dalam wadah buruh pelabuhan dari Host

  5. OpenCart:Cara mengisi oc_category_path secara akurat