Heim > Java > javaLernprogramm > Wie ordne ich PostgreSQL-Arrays mit Hibernate Java-Arrays zu?

Wie ordne ich PostgreSQL-Arrays mit Hibernate Java-Arrays zu?

Susan Sarandon
Freigeben: 2024-10-25 07:07:28
Original
218 Leute haben es durchsucht

How to Map PostgreSQL Arrays to Java Arrays with Hibernate?

Zuordnung von PostgreSQL-Arrays zu Java-Arrays mit Hibernate

Problem

Der Versuch, ein numerisches PostgreSQL-Array mit Hibernate einem numerischen Java-Array zuzuordnen, führt zu einem Ausnahme bei Datenbankabfragen.

Lösung

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Maven-Abhängigkeit für Ruhezustandstypen hinzufügen:
<code class="xml"><dependency>
    <groupId>com.vladmihalcea</groupId>
    <artifactId>hibernate-types-52</artifactId>
    <version>${hibernate-types.version}</version>
</dependency></code>
Nach dem Login kopieren
  1. Definieren Sie Hibernate-Typdefinitionen:

Geben Sie in Ihrer Java-Klasse die benutzerdefinierten Hibernate-Typen an, die Sie zum Zuordnen verwenden Arrays:

<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>
Nach dem Login kopieren
  1. Benutzerdefinierte Ruhezustandstypen erstellen (optional):

Die Klassen StringArrayType und IntArrayType sind nicht integriert; Sie müssen sie wie folgt erstellen:

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

Beim Beibehalten von Entitäten mit Array-Werten generiert Hibernate SQL-Anweisungen, die Ordnen Sie die Arrays korrekt zu.

Beispiel

Angenommen, die folgende Tabellenstruktur:

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

Sie können es der folgenden Java-Klasse zuordnen:

<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>
Nach dem Login kopieren

Beim Einfügen von Entitäten mit Array-Werten generiert Hibernate SQL-Anweisungen wie:

<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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie ordne ich PostgreSQL-Arrays mit Hibernate Java-Arrays zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage