我有一个简单的spring/hibernate应用程序,它由mysql数据库支持。
数据库是字符集 utf8mb4
整理 utf8mb4_bin
. 我有很多包含非拉丁字符的数据。
我有一个页面表(id、pagename、text),其中pagename是唯一索引,我使用hibernate criteria api查询此表:
Page result = session.createQuery(query.where(
builder.equal(root.get("pagename"), name)
).select(root)).getSingleResult();
对于某些值,我有一个 ResultNotFound
例外。尽管有一个记录是匹配的。我可以通过查询:
select count(*) from page where pagename="Tři_oříšky_pro_Popelku"
1 row in set (0.01 sec)
如果我通过pk而不是这个uk来比较java中的字符串,则返回字符串比较 true
```
session.createSQLQuery(
"select * from page p where p.id = :pid")
.addEntity(Page.class)
.setParameter("pid", 29752).list().get(0).getPageName().equals(name);
我错过了一些很简单的东西吗?我试过在hibernate配置文件中使用字符集和编码,但是我被卡住了!
我在用 `org.hibernate:hibernate-java8:5.2.10.Final` 以及 `mysql:mysql-connector-java:6.0.6`
暂无答案!
目前还没有任何答案,快来回答吧!