Einführung
Daten aus einer PostgreSQL-JSON-Spalte in einen Hibernate integrieren Das Unternehmen kann Herausforderungen mit sich bringen. Der JSON-Typ in PostgreSQL erfordert eine bestimmte Zuordnungsstrategie für eine nahtlose Interaktion mit einer Entitätseigenschaft. Dieser Artikel untersucht die verfügbaren Ansätze zum Einrichten dieser Zuordnung und stellt Codeausschnitte und ein reales Beispiel für eine benutzerdefinierte Benutzertypimplementierung bereit.
Identifizieren des Datentyps
Wann Beim Versuch, eine PostgreSQL-JSON-Spalte einem JPA2-Entitätsfeld zuzuordnen, kann die Verwendung von String als Datentyp zu Konvertierungsproblemen führen. Der richtige Werttyp hängt von den spezifischen Anforderungen und der verwendeten Zuordnungsstrategie ab.
Benutzerdefinierter Benutzertyp
Um eine JSON-Spalte einer Entitätseigenschaft zuzuordnen, können Sie einen benutzerdefinierten definieren Benutzertyp im Ruhezustand. Dies ermöglicht die direkte Zuordnung von String-Werten zum JSON-Typ der Datenbank. Hier ist eine Beispielimplementierung:
<code class="java">import org.hibernate.HibernateException; import org.hibernate.engine.spi.SessionImplementor; import org.hibernate.usertype.UserType; import java.io.Serializable; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Types; public class StringJsonUserType implements UserType { // Implementation details here... }</code>
Definieren des Benutzertyps
Der benutzerdefinierte Benutzertyp wird in der Entitätsklasse mit Anmerkungen versehen:
<code class="java">@TypeDefs( {@TypeDef( name= "StringJsonObject", typeClass = StringJsonUserType.class)})</code>
Eigenschaftsanmerkung
Die Entitätseigenschaft ist mit Anmerkungen versehen, um den benutzerdefinierten Benutzertyp zu verwenden:
<code class="java">@Type(type = "StringJsonObject") public String getBar() { return bar; }</code>
Konfigurieren der Datenbank
Ruhezustand übernimmt die Erstellung der Spalte mit JSON-Typ in der Datenbank basierend auf der Entitätszuordnung.
Beispielprojekt
Ein GitHub-Projekt steht zur weiteren Erkundung zur Verfügung:
https://github.com/timfulmer/hibernate-postgres-jsontype
Das obige ist der detaillierte Inhalt vonWie ordne ich eine PostgreSQL-JSON-Spalte einer Hibernate-Entity-Eigenschaft zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!