मावेन निर्भरता
सबसे पहले आपको अपने प्रोजेक्ट 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
)