JDBC के दृष्टिकोण से, PostgreSQL एनम को एक स्ट्रिंग की तरह मानें।
जावा एनम और पोस्टग्रेएसक्यूएल एनम के बीच कन्वर्ट ब्लॉग को उद्धृत करना:
<ब्लॉकक्वॉट>PostgreSQL आपको निम्नलिखित सिंटैक्स का उपयोग करके एनम प्रकार बनाने की अनुमति देता है:
CREATE TYPE animal_type AS ENUM('DOG', 'CAT', 'SQUIRREL');
अब आप अपनी टेबल में 'जानवर' को डेटाटाइप के तौर पर इस्तेमाल कर सकते हैं, उदाहरण के लिए:
create table pet (
pet_id integer not null,
pet_type animal_type not null,
name varchar(20) not null
);
जावा में, आपके पास एक समान एनम प्रकार होगा:
public enum AnimalType {
DOG,
CAT,
SQUIRREL;
}
Java और PostgreSQL एनम के बीच कनवर्ट करना सीधा है। उदाहरण के लिए, किसी एनम फ़ील्ड को सम्मिलित करने या अपडेट करने के लिए आप अपने SQL ReadyedStatement में CAST सिंटैक्स का उपयोग कर सकते हैं:
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, ?);
पोस्टग्रेज आपको केवल एक स्ट्रिंग के रूप में इसके मान को पास करके एक एनम को सम्मिलित/अपडेट करने देगा।
कास्टिंग हो या न हो, जावा पक्ष समान है। आप इस तरह फ़ील्ड सेट करेंगे:
stmt.setInt(1, 1);
stmt.setString(2, AnimalType.DOG.toString());
stmt.setString(3, 'Rex');
एक सेलेक्ट स्टेटमेंट से एनम को पुनः प्राप्त करना इस तरह दिखता है:
AnimalType.valueOf(stmt.getString("pet_type"));
ध्यान रखें कि एनम केस-संवेदी हैं, इसलिए आपके पोस्टग्रेज एनम और जावा एनम के बीच किसी भी मामले के बेमेल होने का हिसाब देना होगा। यह भी ध्यान दें कि PostgreSQL enum प्रकार गैर-मानक SQL है, और इस प्रकार पोर्टेबल नहीं है।