当我尝试使用 hibernate + jpa 在 MYSQL 数据库中保存姓氏 = 'Lučić' 的患者时,我遇到了问题。
当我执行常规 INSERT INTO 操作时,字母 č 和 ć 在数据库和我的 jsf 表单上正确显示,因此我确信我的表单和数据库中的字符集是正确的。
这是我的 hibernate 配置:
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 配置的问题。当 hibernate+jpa 将病人保存到数据库时,它将 č,ć 转换为 ??字符。
任何人都可以指出我应该在哪里查看/阅读/检查的内容吗?
谢谢!
最佳答案
您的连接似乎未使用 UTF8
改变
app_persistance.connection.url=jdbc:mysql://localhost:3306/dentapp
至
app_persistance.connection.url=jdbc:mysql://localhost:3306/dentapp?useUnicode=true&characterEncoding=utf-8
关于java - Hibernate mysql 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19811687/