Maison  >  Article  >  Java  >  Comment résoudre le problème de l'erreur tronquée en chinois lorsque Hibernate insère des données

Comment résoudre le problème de l'erreur tronquée en chinois lorsque Hibernate insère des données

不言
不言avant
2018-10-11 15:06:282258parcourir

Le contenu de cet article concerne la solution au message d'erreur chinois tronqué lorsque Hibernate insère des données. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère que cela vous sera utile.

Description de l'erreur

Le programme s'exécute et insère des données (y compris le chinois) dans la table Erreur : xE6xB2. x88xE9x9BxAA...

Mais lorsque je crée une nouvelle base de données et que j'insère manuellement des données en chinois, cela fonctionne très bien non plus après avoir modifié la base de données et encodé la table. De plus, cette situation se produira également sous MySQL5.7 et ne pourra pas être résolue.

Solution du problème

Dans le fichier de configuration principal d'Hibernate, nous allons configurer la base de données dialecte , la configuration générale est la suivante :

<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

Voir le code source correspondant et vous verrez qu'il existe une méthode, comme suit :

@Override  
public String getTableTypeString()
{  
  return "ENGINE=InnoDB";  
}

Nous pouvons donc personnaliser une classe et réécrire la méthode ci-dessus comme suit :

package com.taohan.util;
import org.hibernate.dialect.MySQL5InnoDBDialect;
public class HibernateEncodeAdapter MySQL5InnoDBDialect {
    @Override 
    public String getTableTypeString() {  
        return "ENGINE=InnoDB DEFAULT CHARSET=utf8";    
    }  
}

Modifiez enfin le fichier de configuration principal d'Hibernate, spécifiez la classe de dialecte de la base de données que nous avons personnalisée, comme suit :

<property name="dialect">com.taoahn.util.HibernateEncodeAdapter</property>

Bien sûr, c'est Il est préférable de le définir dans le fichier de configuration principal d'Hibernate en même temps. Ajoutez ?useUnicode=true&characterEncoding=UTF-8 après le chemin de connexion à la base de données, comme suit :

<property name="hibernate.connection.url">jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8</property>

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer