Maison > Java > javaDidacticiel > le corps du texte

Comment mapper les colonnes JSON dans PostgreSQL aux propriétés d'entité Hibernate ?

DDD
Libérer: 2024-10-26 06:38:30
original
1063 Les gens l'ont consulté

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

Mappage des colonnes JSON dans PostgreSQL vers les propriétés d'entité Hibernate

Problème : mappage des colonnes JSON vers les entités Hibernate

Mappage des données JSON stockées dans PostgreSQL vers l'entité Hibernate les propriétés peuvent être difficiles. Tenter de mapper la colonne à un champ de chaîne dans l'entité génère une exception lors de l'enregistrement de l'entité, indiquant une incapacité à convertir des caractères variables (chaîne) en JSON.

Solution : définir un type d'utilisateur personnalisé

Pour mapper efficacement les colonnes JSON aux entités Hibernate, un type d'utilisateur personnalisé doit être défini. Ce type traduit entre les valeurs String et le type de données JSON utilisé dans la base de données.

1. Extension du dialecte PostgreSQL :

Étendez le dialecte PostgreSQL par défaut pour reconnaître le type "json" :

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

    public JsonPostgreSQLDialect() {
        super();
        this.registerColumnType(Types.JAVA_OBJECT, "json");
    }
}</code>
Copier après la connexion

2. Implémentation du type d'utilisateur :

Implémentez l'interface org.hibernate.usertype.UserType pour définir le mappage personnalisé :

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

    // ... implementation of required methods ...
}</code>
Copier après la connexion

3. Annotation de l'entité et de la propriété :

Ajoutez les annotations suivantes à la déclaration de classe d'entité et à la propriété mappée JSON :

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

Exemple de projet :

Référez-vous au projet GitHub pour un exemple complet d'implémentation : https://github.com/timfulmer/hibernate-postgres-jsontype

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal