PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL एनम और जावा एनम के बीच हाइबरनेट मैपिंग

आप हाइबरनेट प्रकार निर्भरता का उपयोग करके इन प्रकारों को मेवेन सेंट्रल के माध्यम से आसानी से प्राप्त कर सकते हैं:

<dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>${hibernate-types.version}</version>
</dependency>

यदि आप निम्न कस्टम प्रकार का उपयोग करके आसानी से Java Enum को PostgreSQL Enum कॉलम प्रकार में मैप करते हैं:

public class PostgreSQLEnumType extends org.hibernate.type.EnumType {
     
    public void nullSafeSet(
            PreparedStatement st, 
            Object value, 
            int index, 
            SharedSessionContractImplementor session) 
        throws HibernateException, SQLException {
        if(value == null) {
            st.setNull( index, Types.OTHER );
        }
        else {
            st.setObject( 
                index, 
                value.toString(), 
                Types.OTHER 
            );
        }
    }
}

इसका उपयोग करने के लिए, आपको हाइबरनेट @Type . के साथ फ़ील्ड को एनोटेट करना होगा एनोटेशन जैसा कि निम्नलिखित उदाहरण में दिखाया गया है:

@Entity(name = "Post")
@Table(name = "post")
@TypeDef(
    name = "pgsql_enum",
    typeClass = PostgreSQLEnumType.class
)
public static class Post {
 
    @Id
    private Long id;
 
    private String title;
 
    @Enumerated(EnumType.STRING)
    @Column(columnDefinition = "post_status_info")
    @Type( type = "pgsql_enum" )
    private PostStatus status;
 
    //Getters and setters omitted for brevity
}

यह मैपिंग मानती है कि आपके पास post_status_info . है PostgreSQL में एनम प्रकार:

CREATE TYPE post_status_info AS ENUM (
    'PENDING', 
    'APPROVED', 
    'SPAM'
)

बस, यह एक आकर्षण की तरह काम करता है। यहाँ GitHub पर एक परीक्षण है जो इसे साबित करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कैसे कोश () PostgreSQL में काम करता है

  2. PostgreSQL में इनपुट के अंत में सिंटैक्स त्रुटि

  3. शामिल होने के साथ पोस्टग्रेस्क्ल अपडेट

  4. PostgreSQL में ऑपरेशन क्वेरी के इस घंटे को पूरा करें

  5. मैं क्वेरी निष्पादन समय के psycopg2 लॉगिंग कैसे प्राप्त करूं?