Dal punto di vista di JDBC, tratta semplicemente l'enumerazione PostgreSQL come una stringa.
Blog di citazioni Converti tra enumerazioni Java e enumerazioni PostgreSQL:
PostgreSQL ti consente di creare tipi enum utilizzando la seguente sintassi:
CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');
Ora puoi utilizzare "animale" come tipo di dati nelle tue tabelle, ad esempio:
create table pet (
pet_id integer not null,
pet_type animal_type not null,
name varchar(20) not null
);
In Java, avresti un tipo enum corrispondente:
public enum AnimalType {
DOG,
CAT,
SQUIRREL;
}
La conversione tra enumerazioni Java e PostgreSQL è semplice. Ad esempio, per inserire o aggiornare un campo enum è possibile utilizzare la sintassi CAST nella propria 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 ti consentirà anche di inserire/aggiornare un enum semplicemente passando il suo valore come stringa.
Indipendentemente dal casting o meno, il lato Java è lo stesso. Imposteresti i campi in questo modo:
stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');
Il recupero dell'enumerazione da un'istruzione SELECT è simile al seguente:
AnimalType.valueOf(stmt.getString("pet_type"));
Tieni presente che le enumerazioni fanno distinzione tra maiuscole e minuscole, quindi è necessario tenere conto di eventuali discrepanze tra le enumerazioni Postgres e le enum Java. Si noti inoltre che il tipo enum PostgreSQL non è SQL standard e quindi non portabile.