Desde el punto de vista de JDBC, simplemente trate la enumeración de PostgreSQL como una cadena.
Blog de citas Convertir entre enumeraciones de Java y enumeraciones de PostgreSQL:
PostgreSQL le permite crear tipos de enumeración utilizando la siguiente sintaxis:
CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');
Ahora puede usar 'animal' como tipo de datos en sus tablas, por ejemplo:
create table pet (
pet_id integer not null,
pet_type animal_type not null,
name varchar(20) not null
);
En Java, tendría un tipo de enumeración correspondiente:
public enum AnimalType {
DOG,
CAT,
SQUIRREL;
}
La conversión entre enumeraciones de Java y PostgreSQL es sencilla. Por ejemplo, para insertar o actualizar un campo de enumeración, puede usar la sintaxis CAST en su 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 también le permitirá insertar/actualizar una enumeración simplemente pasando su valor como una cadena.
Ya sea que emita o no, el lado de Java es el mismo. Establecerías los campos así:
stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');
La recuperación de la enumeración de una declaración SELECT se ve así:
AnimalType.valueOf(stmt.getString("pet_type"));
Tenga en cuenta que las enumeraciones distinguen entre mayúsculas y minúsculas, por lo que deberá tener en cuenta cualquier discrepancia de mayúsculas y minúsculas entre sus enumeraciones de Postgres y Java. También tenga en cuenta que el tipo de enumeración de PostgreSQL no es SQL estándar y, por lo tanto, no es portátil.