3

MySQLInnoDBテーブルutf-8がエンコードされています。このテーブルには、idフィールドとnameフィールドのみがあります。名前はロシア語で、1つの名前はテスト用に英語で書かれています。英語の名前は[OK]を選択しますが、ロシアの名前で選択しようとすると、空のリストが返されます。CriterionとHQLの両方でクエリを作成しようとしました。

getHibernateTemplate().find("from FirstName where name='free' ");
getHibernateTemplate().find("from FirstName where name='ИННА' ");

これが接続文字列です- ?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8

hibernate3.2.7.gaとspring2.5.6.SEC03を使用しています

これが休止状態のログです:

Hibernate: /* from FirstName where name='ИННА'  */ select firstname0_.`id` as id1_24_, firstname0_.`name` as name2_24_ from `first_name` firstname0_ where firstname0_.`name`='ИННА' limit ?
4

3 に答える 3

3

みんなのおかげで、私は答えを見つけました。

問題は接続文字列にありました。リファクタリングを行い、接続文字列をxmlではなくプロパティファイルに移動しました。しかし、私は「&」エンティティを「&」に変更しませんでした。成功した接続文字列はプロパティファイルにあります

jdbc:mysql://${host}:${port}/${database}?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8

XMLファイルは&エンティティを正しいものに変更しますが、プロパティ形式はこれを行いません。

于 2012-06-12T14:17:25.427 に答える
0

データベースレベルで文字エンコードを変更してみましたか?MySQLのドキュメントによると、キリル文字は「cp1251」でサポートされています

このリンクもご覧ください

于 2012-06-12T13:58:35.587 に答える
0
Criteria coCriteria = Session.createCriteria(coClass).add(Restrictions.eq(strColumnName, strColumnValue));
list = coCriteria.list();

この休止状態の基準で試してみましたか。
ここで、「Session」は、休止状態で生成されたセッションのセッションオブジェクトになります。
1)coClass = "pojo class name"
2)strColumnName ="pojoクラスフィールド名"あなたの場合は"name"になります
3)strColumnValue=あなたの場合は"ИННА"になります

于 2012-06-12T11:10:26.850 に答える