이 글의 내용은 Hibernate가 데이터를 삽입할 때 발생하는 중국어 오류 메시지에 대한 해결 방법에 대한 내용입니다. 필요한 친구들이 참고할 수 있기를 바랍니다.
오류 설명
프로그램이 실행되고 데이터(중국어 포함)가 테이블에 삽입되고 오류가 보고됩니다. xE6xB2x88xE9x9BxAA...
하지만 새 데이터베이스를 만들고 중국어 데이터를 수동으로 삽입하면 데이터베이스를 수정하고 테이블을 인코딩할 때에도 같은 현상이 발생합니다. 게다가 이 상황은 MySQL5.7에서도 발생하며 해결할 수 없습니다.
Problem Solved
Hibernate 기본 구성 파일에서 데이터베이스 방언을 구성합니다. 일반적인 구성은 다음과 같습니다.
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
해당 소스 코드를 보면 알 수 있습니다. 다음과 같은 메소드가 있는지 확인하세요.
@Override public String getTableTypeString() { return "ENGINE=InnoDB"; }
따라서 클래스를 사용자 정의하고 위의 메소드를 다음과 같이 다시 작성할 수 있습니다.
package com.taohan.util; import org.hibernate.dialect.MySQL5InnoDBDialect; public class HibernateEncodeAdapter MySQL5InnoDBDialect { @Override public String getTableTypeString() { return "ENGINE=InnoDB DEFAULT CHARSET=utf8"; } }
마지막으로 Hibernate 기본 구성 파일을 수정하고 데이터베이스 언어를 지정합니다.
<property name="dialect">com.taoahn.util.HibernateEncodeAdapter</property>
물론 Hibernate 메인 설정 파일에 데이터베이스 연결 경로를 설정한 후 다음과 같이 ?useUnicode=true&characterEncoding=UTF-8을 추가하는 것이 가장 좋습니다. :
<property name="hibernate.connection.url">jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8</property>
위 내용은 Hibernate가 데이터를 삽입할 때 중국어 왜곡 오류 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!