您的位置:首页 > 产品设计 > UI/UE

org.hibernate.exception.GenericJDBCException: Incorrect string value:

2016-04-05 18:36 429 查看
原因:数据库中的的表varchar型的域的charset=latin……   而程序中使用的字符集为utf-8,将数据库中的也改为utf-8即可

详情:用MyEclipse开发一个简单的基于struts—+hibernate的学生登录管理系统

写了一个测试方法如下:

// 添加测试数据 

@Test

public void testSaveStudents() {

// 创建配置对象

Configuration config = new Configuration().configure();

// 创建服务注册对象

ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()

.applySettings(config.getProperties()).buildServiceRegistry();

// 创建sessionFactory

SessionFactory sessionFactory = config

.buildSessionFactory(serviceRegistry);

// 创建session对象

Session session = sessionFactory.getCurrentSession();

Transaction tx = session.beginTransaction();

Students s1=new Students("S0000001","张三丰","男",new Date(),"武当山");

Students s2=new Students("S0000002","郭靖","男",new Date(),"桃花岛");

Students s3=new Students("S0000003","黄蓉","女",new Date(),"桃花岛");

session.save(s1);

session.save(s2);

session.save(s3);

tx.commit();

sessionFactory.close();

}

上述方法run as junit 时候报如下错误:​

 

org.hibernate.exception.GenericJDBCException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89...' for column 'sname' at row 1

at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:54)

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)

at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)

at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)

at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)

at com.sun.proxy.$Proxy5.executeUpdate(Unknown Source)

at org.hibernate.engine.jdbc.batch.internal.NonBatchingBatch.addToBatch(NonBatchingBatch.java:56)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2859)

at org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:3300)

at org.hibernate.action.internal.EntityInsertAction.execute(EntityInsertAction.java:88)

at org.hibernate.engine.spi.ActionQueue.execute(ActionQueue.java:362)

at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:354)

at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:275)

at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:326)

at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:52)

at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1214)

at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:403)

at org.hibernate.engine.transaction.internal.jdbc.JdbcTransaction.beforeTransactionCommit(JdbcTransaction.java:101)

at org.hibernate.engine.transaction.spi.AbstractTransactionImpl.commit(AbstractTransactionImpl.java:175)

at entity.TestStudents.testSaveStudents(TestStudents.java:57)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.junit.internal.runners.TestMethodRunner.executeMethodBody(TestMethodRunner.java:99)

at org.junit.internal.runners.TestMethodRunner.runUnprotected(TestMethodRunner.java:81)

at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)

at org.junit.internal.runners.TestMethodRunner.runMethod(TestMethodRunner.java:75)

at org.junit.internal.runners.TestMethodRunner.run(TestMethodRunner.java:45)

at org.junit.internal.runners.TestClassMethodsRunner.invokeTestMethod(TestClassMethodsRunner.java:71)

at org.junit.internal.runners.TestClassMethodsRunner.run(TestClassMethodsRunner.java:35)

at org.junit.internal.runners.TestClassRunner$1.runUnprotected(TestClassRunner.java:42)

at org.junit.internal.runners.BeforeAndAfterRunner.runProtected(BeforeAndAfterRunner.java:34)

at org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java:52)

at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)

at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:459)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:675)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:382)

at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:192)

Caused by: java.sql.SQLException: Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89...' for column 'sname' at row 1

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)

at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)

at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)

at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)

at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)

at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)

at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)

at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)

at sun.reflect.NativeMethodA
85ce
ccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)

... 36 more
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javaweb开发