0

当我尝试使用 hibernate + jpa 在 MYSQL 数据库中保存带有 familyname = 'Lučić' 的患者时遇到问题。

当我执行常规 INSERT INTO 时,字母 č 和 ć 在数据库和我的 jsf 表单中正确显示,所以我确定我表单上的字符集在数据库中是正确的。

这是我的休眠配置:

app_persistance.dialect=org.hibernate.dialect.MySQLDialect
app_persistance.show_sql=true
app_persistance.generateDdl=true
app_persistance.minPoolSize=1
app_persistance.maxPoolSize=10
app_persistance.connection.url=jdbc:mysql://localhost:3306/dentapp
app_persistance.connection.username=root
app_persistance.connection.password=root
app_persistance.connection.driver_class=com.mysql.jdbc.Driver
app_persistance.hibernate.connection.CharSet=utf8_croatian_ci
app_persistance.hibernate.connection.characterEncoding=UTF-8
app_persistance.hibernate.connection.useUnicode=true
app_persistance.hbm2ddl=update

我尝试调试并检查来自 jsf 表单的 Patient 对象中的值 familyname 在 serviceImpl 中是否具有正确的值(č、ć):

@Override
@Transactional
public Patient save(Patient patient) {
    return patientDAO.save(patient);
}

但是在耐心对象中一切似乎都很好,所以它必须是休眠配置的一些问题。当 hibernate+jpa 将病人保存到数据库时,它将 č,ć 转换为 ?? 人物。

谁能指出我应该在哪里看/阅读/检查的东西?

谢谢 !

4

1 回答 1

2

您的连接似乎没有使用 UTF8

改变

app_persistance.connection.url=jdbc:mysql://localhost:3306/dentapp

app_persistance.connection.url=jdbc:mysql://localhost:3306/dentapp?useUnicode=true&characterEncoding=utf-8
于 2013-11-06T12:15:12.523 回答