Behandeln Sie die PostgreSQL-Enumeration aus JDBC-Sicht einfach wie einen String.
Zitat-Blog Konvertieren Sie zwischen Java-Enumerationen und PostgreSQL-Enumerationen:
Mit PostgreSQL können Sie Aufzählungstypen mit der folgenden Syntax erstellen:
CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');
Sie können jetzt „Tier“ als Datentyp in Ihren Tabellen verwenden, zum Beispiel:
create table pet (
pet_id integer not null,
pet_type animal_type not null,
name varchar(20) not null
);
In Java hätten Sie einen entsprechenden Aufzählungstyp:
public enum AnimalType {
DOG,
CAT,
SQUIRREL;
}
Das Konvertieren zwischen Java- und PostgreSQL-Enumerationen ist unkompliziert. Um beispielsweise ein Aufzählungsfeld einzufügen oder zu aktualisieren, könnten Sie die CAST-Syntax in Ihrem SQL PreparedStatement verwenden:
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, ?);
Mit Postgres können Sie auch eine Aufzählung einfügen/aktualisieren, indem Sie einfach ihren Wert als Zeichenfolge übergeben.
Ob Casting oder nicht, die Java-Seite ist die gleiche. Sie würden die Felder wie folgt festlegen:
stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');
Das Abrufen der Aufzählung aus einer SELECT-Anweisung sieht folgendermaßen aus:
AnimalType.valueOf(stmt.getString("pet_type"));
Beachten Sie, dass bei Aufzählungen zwischen Groß- und Kleinschreibung unterschieden wird, sodass alle Fälle, in denen Ihre Postgres-Aufzählungen und Java-Aufzählungen nicht übereinstimmen, berücksichtigt werden müssen. Beachten Sie auch, dass der PostgreSQL-Enumerationstyp kein Standard-SQL ist und daher nicht portierbar.