PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Анотации на Hibernate - UniqueConstraint, без значение за малки и големи букви

Бих предложил да атакуваме този проблем от различен ъгъл:

  1. добавете нова колона, вътрешна, наречете я lcname (означава име с малки букви)

    @NotEmpty
    @Column(nullable = false)
    private String lcname;
    
  2. променете ограничението, което сте задали като анотация, за да използвате вместо това новото поле:

    @Entity
    @Table(uniqueConstraints={@UniqueConstraint(columnNames={"lcname"})})
    public class Component extends Model {
        ...
    }
    
  3. променете инструмента за настройка на име, за да зададете също lcname с малки букви на оригиналното име, предоставено от клиента

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

Това е. Всеки път, когато обектът ще бъде запазен, ще бъде запазено и име с малки букви. По този начин, ако запишете „A“, ще имате запис с lcname =„a“ и следващия път, когато се опитате да запишете обект с име „a“, операцията ще се провали поради ограничението за lcname. Промяната е напълно прозрачна на всеки, който извлича обект от базата данни, тъй като lcname е лично и няма getter за него, докато оригиналното getName ще върне оригиналното име, както е предоставено първоначално от клиента, който го е създал.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Две колони в подзаявка в клауза where

  2. Как да генерирам сериен номер в заявка?

  3. Инсталирането на psycopg2 е неуспешно на MacOS с неясно съобщение за грешка

  4. Как да намерите пътя на pg_config

  5. PostreSQL 10 не успява да стартира на Ubuntu 18.04, работещ на Windows подсистема за Linux