Heim  >  Artikel  >  Java  >  Wie ordne ich JSON-Spalten in PostgreSQL Hibernate-Entitätseigenschaften zu?

Wie ordne ich JSON-Spalten in PostgreSQL Hibernate-Entitätseigenschaften zu?

DDD
DDDOriginal
2024-10-26 06:38:30977Durchsuche

How to Map JSON Columns in PostgreSQL to Hibernate Entity Properties?

Zuordnen von JSON-Spalten in PostgreSQL zu Hibernate-Entitätseigenschaften

Problem: Zuordnen von JSON-Spalten zu Hibernate-Entitäten

Zuordnen von in PostgreSQL gespeicherten JSON-Daten zu Hibernate-Entitäten Eigenschaften können eine Herausforderung sein. Der Versuch, die Spalte einem String-Feld in der Entität zuzuordnen, löst beim Speichern der Entität eine Ausnahme aus, die darauf hinweist, dass die Zeichenvariation (String) nicht in JSON konvertiert werden kann.

Lösung: Definieren eines benutzerdefinierten Benutzertyps

Um JSON-Spalten effektiv Hibernate-Entitäten zuzuordnen, muss ein benutzerdefinierter Benutzertyp definiert werden. Dieser Typ übersetzt zwischen String-Werten und dem in der Datenbank verwendeten JSON-Datentyp.

1. Erweitern des PostgreSQL-Dialekts:

Erweitern Sie den Standard-PostgreSQL-Dialekt, um den Typ „json“ zu erkennen:

<code class="java">public class JsonPostgreSQLDialect extends PostgreSQL9Dialect {

    public JsonPostgreSQLDialect() {
        super();
        this.registerColumnType(Types.JAVA_OBJECT, "json");
    }
}</code>

2. Implementieren des Benutzertyps:

Implementieren Sie die Schnittstelle org.hibernate.usertype.UserType, um die benutzerdefinierte Zuordnung zu definieren:

<code class="java">public class StringJsonUserType implements UserType {

    // ... implementation of required methods ...
}</code>

3. Kommentieren der Entität und Eigenschaft:

Fügen Sie die folgenden Anmerkungen zur Entitätsklassendeklaration und der JSON-zugeordneten Eigenschaft hinzu:

<code class="java">@TypeDefs({@TypeDef(name = "StringJsonObject", typeClass = StringJsonUserType.class)})
...
@Type(type = "StringJsonObject")
public String getJsonPayload() { ... }</code>

Beispielprojekt:

Eine vollständige Beispielimplementierung finden Sie im GitHub-Projekt: https://github.com/timfulmer/hibernate-postgres-jsontype

Das obige ist der detaillierte Inhalt vonWie ordne ich JSON-Spalten in PostgreSQL Hibernate-Entitätseigenschaften zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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