PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Anotasi Hibernasi - UniqueConstraint Tidak Peka Huruf Besar

Saya akan menyarankan untuk menyerang masalah ini dari sudut yang berbeda:

  1. tambahkan kolom baru, kolom internal, sebut saja lcname (singkatan dari nama dengan huruf kecil)

    @NotEmpty
    @Column(nullable = false)
    private String lcname;
    
  2. ubah batasan yang Anda tetapkan sebagai anotasi untuk menggunakan bidang baru sebagai gantinya :

    @Entity
    @Table(uniqueConstraints={@UniqueConstraint(columnNames={"lcname"})})
    public class Component extends Model {
        ...
    }
    
  3. ubah penyetel nama untuk juga menyetel lcname dengan huruf kecil dari nama asli yang disediakan oleh klien

    public void setName(String name) {
        this.name = name;
        this.lcname = name.toLowerCase();
    }
    

Itu dia. Setiap kali entitas akan dipertahankan, nama dengan huruf kecil juga akan disimpan. Dengan begitu jika Anda menyimpan "A", Anda akan memiliki catatan dengan lcname ="a" disimpan, dan lain kali Anda mencoba untuk menyimpan entitas dengan nama "a" operasi akan gagal karena kendala pada lcnamePerubahan benar-benar transparan kepada siapa saja yang mengambil entitas dari database karena lcname bersifat pribadi dan tidak ada pengambil untuknya, sedangkan getName asli akan mengembalikan nama asli seperti yang awalnya diberikan oleh klien yang membuatnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menyiapkan postgres dengan labu di win7

  2. Contoh pernyataan INSERT yang disiapkan menggunakan permata ruby ​​pg

  3. Bagaimana cara mengonversi pgdump biner (terkompresi) ke file SQL biasa?

  4. Kolom teks Postgres yang hanya mengizinkan/mengubah menjadi huruf kecil dan tidak ada karakter khusus seperti:öáè

  5. Cara Mendekode Log Kesalahan PostgreSQL