Rumah  >  Artikel  >  Java  >  Bagaimana untuk Memetakan Array PostgreSQL ke Array Java dengan Hibernate?

Bagaimana untuk Memetakan Array PostgreSQL ke Array Java dengan Hibernate?

Susan Sarandon
Susan Sarandonasal
2024-10-25 07:07:28111semak imbas

How to Map PostgreSQL Arrays to Java Arrays with Hibernate?

Memetakan Tatasusunan PostgreSQL ke Tatasusunan Java dengan Hibernate

Masalah

Mencuba memetakan tatasusunan PostgreSQL berangka ke tatasusunan Java berangka menggunakan hasil Hibernate dalam pengecualian semasa pertanyaan pangkalan data.

Penyelesaian

Untuk menyelesaikan isu ini, ikut langkah berikut:

  1. Tambah Ketergantungan Maven Jenis Hibernate:
<code class="xml"><dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>${hibernate-types.version}</version>
</dependency></code>
  1. Tentukan Takrifan Jenis Hibernate:

Dalam kelas Java anda, nyatakan jenis Hibernate tersuai yang akan anda gunakan untuk memetakan tatasusunan:

<code class="java">@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;</code>
  1. Buat Jenis Hibernate Tersuai (Pilihan):

Kelas StringArrayType dan IntArrayType tidak terbina dalam; anda perlu menciptanya seperti berikut:

<code class="java">@TypeDef(
    name = "string-array",
    typeClass = StringArrayType.class
)
@TypeDef(
    name = "int-array",
    typeClass = IntArrayType.class
)</code>
  1. Pengujian:

Apabila entiti berterusan dengan nilai tatasusunan, Hibernate akan menjana pernyataan SQL yang peta tatasusunan dengan betul.

Contoh

Andaikan struktur jadual berikut:

<code class="sql">CREATE TABLE event (
    id int8 not null,
    version int4,
    sensor_names text[],
    sensor_values integer[],
    primary key (id)
);</code>

Anda boleh memetakannya ke kelas Java berikut:

<code class="java">@Entity(name = "Event")
@Table(name = "event")
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
}</code>

Apabila memasukkan entiti dengan nilai tatasusunan, Hibernate akan menjana pernyataan SQL seperti:

<code class="sql">INSERT INTO event (
    version,
    sensor_names,
    sensor_values,
    id
)
VALUES (
    0,
    {NULL},
    {NULL},
    0
);

INSERT INTO event (
    version,
    sensor_names,
    sensor_values,
    id
)
VALUES (
    0,
    {"Temperature","Pressure"},
    {"12","756"},
    1
);</code>

Atas ialah kandungan terperinci Bagaimana untuk Memetakan Array PostgreSQL ke Array Java dengan Hibernate?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn