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

हाइबरनेट के साथ PostgreSQL सरणी को कैसे मैप करें

मावेन निर्भरता

सबसे पहले आपको अपने प्रोजेक्ट pom.xml में निम्न हाइबरनेट टाइप मावेन डिपेंडेंसी को सेट करना होगा। कॉन्फ़िगरेशन फ़ाइल:

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

मान लें कि यह तालिका आपके डेटाबेस में है:

create table event (
    id int8 not null, 
    version int4, 
    sensor_names text[], 
    sensor_values integer[], 
    primary key (id)
)

और आप इसे इस तरह मैप करना चाहते हैं:

@Entity(name = "Event")
@Table(name = "event")
@TypeDefs({
    @TypeDef(
        name = "string-array", 
        typeClass = StringArrayType.class
    ),
    @TypeDef(
        name = "int-array", 
        typeClass = IntArrayType.class
    )
})
public static class Event extends BaseEntity {
 
    @Type( type = "string-array" )
    @Column(
        name = "sensor_names", 
        columnDefinition = "text[]"
    )
    private String[] sensorNames;
 
    @Type( type = "int-array" )
    @Column(
        name = "sensor_values", 
        columnDefinition = "integer[]"
    )
    private int[] sensorValues;
 
    //Getters and setters omitted for brevity
}

string-array और int-array कस्टम प्रकार हैं जिन्हें BaseEntity . में परिभाषित किया जा सकता है सुपरक्लास:

@TypeDefs({
    @TypeDef(
        name = "string-array", 
        typeClass = StringArrayType.class
    ),
    @TypeDef(
        name = "int-array", 
        typeClass = IntArrayType.class
    )
})
@MappedSuperclass
public class BaseEntity {

    @Id
    private Long id;

    @Version
    private Integer version;

    //Getters and setters omitted for brevity
}

StringArrayType और IntArrayType हाइबरनेट प्रकार परियोजना द्वारा प्रदान की जाने वाली कक्षाएं हैं।

परीक्षण का समय

अब, जब आप कुछ निकाय सम्मिलित करते हैं;

Event nullEvent = new Event();
nullEvent.setId(0L);
entityManager.persist(nullEvent);
 
Event event = new Event();
event.setId(1L);
event.setSensorNames(
    new String[] {
        "Temperature", 
        "Pressure"
    }
);
event.setSensorValues( 
    new int[] {
        12, 
        756
    } 
);
entityManager.persist(event);

हाइबरनेट निम्नलिखित SQL कथन उत्पन्न करने जा रहा है:

INSERT INTO event (
    version, 
    sensor_names, 
    sensor_values, 
    id
) 
VALUES (
    0, 
    NULL(ARRAY), 
    NULL(ARRAY), 
    0
)
     
INSERT INTO event (
    version, 
    sensor_names, 
    sensor_values, 
    id
) 
VALUES ( 
    0, 
    {"Temperature","Pressure"}, 
    {"12","756"}, 
    1
)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल पर रूबी:क्या डेटाबेस से आइटम खींचने और उन्हें एक निर्दिष्ट क्रम में वापस करने का कोई तरीका है?

  2. PostgreSQL में महीने का अंतिम दिन प्राप्त करें

  3. पोस्टग्रेज पर एक्सपोनेंशियल मूविंग एवरेज की गणना कैसे करें?

  4. क्या सेलेक्ट टाइप क्वेश्चन ही एकमात्र प्रकार है जिसे नेस्ट किया जा सकता है?

  5. [वीडियो] PostgreSQL में JSON डेटा प्रकारों का परिचय