Rumah > Java > javaTutorial > teks badan

Bagaimana untuk Memetakan Array PostgreSQL ke Array Java dengan Hibernate?

Susan Sarandon
Lepaskan: 2024-10-25 07:07:28
asal
109 orang telah melayarinya

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>
Salin selepas log masuk
  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>
Salin selepas log masuk
  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>
Salin selepas log masuk
  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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!