Hibernate őű-hiba

Egy apró programot fejlesztettem Java-ban, gondoltam JDBC helyett tanulok valami kényelmesebbet. Így esett a választásom a Hibernate-ra.

Egy excel fájlból töltöttem fel MySQL táblát. Persze rögtön észrevettem, hogy az ő/ű helyett ? jelenik meg, de gondoltam, majd a végére hagyom a megoldást.
Nem volt könnyű megtalálni.

Mivel a többi ékezet jó volt, gyanítottam, hogy valami latin1-es tárolási gond lesz.
A MySQL tábla dumpja meg is mutatta, hogy bizony a default charset latin1, a kívánatos utf8 helyett.

(Ez előtt persze sok-sok kört futottam azzal, hogy az excel fájlt különböző karakterkódolásokkal mentettem el meg olvastam be Java-val, meg mindenfélét állítgattam a connection stringen meg a hibernate.cfg.xml-ben.)

Most már csak ki kellett találnom, hogy hozathatnám létre a táblákat a Hibernate-tel úgy, hogy utf8 kódolással tárolja a karaktereket.

Ilyen beállítást nem találtam.

Szerencsére belefutottam egy friss blogba, íme a megoldás:

1. Kell egy saját dialektus:

import org.hibernate.dialect.MySQLMyISAMDialect;

public class MySQLDialectUtf8 extends MySQLMyISAMDialect {
@Override
public String getTableTypeString() {
return " ENGINE=MyISAM DEFAULT CHARSET=utf8";
}
}

2. a hibernate.cfg.xml-be pedig ez:

<property name="dialect">util.MySQLDialectUtf8</property>

(Én a "util" package-embe tettem)

Köszönet az infóért : [www.my-container.de]

Hirdetés

3 pénzügyi döntés, amit minden kisvállalkozónak érdemes átgondolnia az év végéig

PR Ahogy az év vége közeledik, itt az ideje, hogy egy pillanatra megálljunk és áttekintsük vállalkozásunk pénzügyi helyzetét. Ne hagyjuk, hogy az év utolsó hónapjai elússzanak a sürgető feladatok és elfeledett határidők között!

Azóta történt