PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak sprawić, by wyliczenia Java i Postgres współpracowały ze sobą w celu aktualizacji?

Z punktu widzenia JDBC, po prostu traktuj wyliczenie PostgreSQL jak ciąg.

Cytujący blog Konwertuj między wyliczeniami Java i wyliczeniami PostgreSQL:

PostgreSQL umożliwia tworzenie typów wyliczeniowych przy użyciu następującej składni:

CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');

Możesz teraz używać „zwierzę” jako typu danych w swoich tabelach, na przykład:

create table pet (                         
    pet_id        integer         not null,
    pet_type      animal_type     not null,
    name          varchar(20)     not null
);

W Javie masz odpowiedni typ wyliczenia:

public enum AnimalType {
    DOG,
    CAT,
    SQUIRREL;
}

Konwersja między wyliczeniami Java i PostgreSQL jest prosta. Na przykład, aby wstawić lub zaktualizować pole wyliczenia, możesz użyć składni CAST w swoim SQL PreparedStatement:

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, CAST(? AS animal_type), ?);

--or

INSERT INTO pet (pet_id, pet_type, name) VALUES (?, ?::animal_type, ?);

Postgres umożliwia również wstawianie/aktualizowanie wyliczenia, po prostu przekazując jego wartość jako ciąg.

Niezależnie od tego, czy przesyłasz, czy nie, strona Java jest taka sama. Możesz ustawić pola w ten sposób:

stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');

Pobieranie wyliczenia z instrukcji SELECT wygląda tak:

AnimalType.valueOf(stmt.getString("pet_type"));

Weź pod uwagę, że w wyliczeniach rozróżniana jest wielkość liter, więc wszelkie niezgodności wielkości liter między wyliczeniami Postgres i wyliczeniami Java będą musiały zostać uwzględnione. Zauważ również, że typ wyliczenia PostgreSQL jest niestandardowym SQL, a zatem nie jest przenośny.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zwrócić zapytanie z funkcji?

  2. Czy INSERT RETURNING gwarantuje zwrot rzeczy we właściwej kolejności?

  3. Jak formatować liczby jako walutę w PostgreSQL

  4. Nie można utworzyć żądanej usługi [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  5. Dlaczego w psql niektóre polecenia nie działają?