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]