Found: char, expected: varchar2(19)

本文介绍了在使用Hibernate进行数据库映射时,如何正确地处理电话号码字段的数据类型问题。当数据库字段为char类型而在Java中定义为String时,可能会导致类型不匹配的错误。文章详细解释了如何通过调整映射文件来解决此问题。

hibernate映射时候,phone字段是String类型,但在数据库中是char(11),在Junit测试时报错 Found: char, expected: varchar2(19)
在映射文件中修改后配置如下

<property name="phone" column="uk_phone" type="java.lang.Character" length="11" />

增添两个属性,一个是type一个是length

sql报错如下所示: org.jkiss.dbeaver.model.sql.DBSQLException: SQL 错误 [601] [28000]: [errorCode=GS-00601, SQLState='28000', reason='errLine = 10, errColumn = 2, errMsg=Sql syntax error: namable char expected but { found,ioClient:@2787ae63', sessionId=495, serverIP=10.11.11.12:15400, clientIP=10.62.2.80.] at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:133) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:510) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:441) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:169) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:428) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:813) at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:3273) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:118) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:169) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:116) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$ResultSetDataPumpJob.run(ResultSetViewer.java:4577) at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:105) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: com.huawei.gauss.exception.GaussException: [errorCode=GS-00601, SQLState='28000', reason='errLine = 10, errColumn = 2, errMsg=Sql syntax error: namable char expected but { found,ioClient:@2787ae63', sessionId=495, serverIP=10.11.11.12:15400, clientIP=10.62.2.80.] at com.huawei.gauss.exception.ExceptionUtil.processGaussException(SourceFile:104) at com.huawei.gauss.handler.inner.MessageProcessHelper.doExecute(SourceFile:81) at com.huawei.gauss.handler.statement.inner.StmtMsgProcessCHandler.doExecute(SourceFile:161) at com.huawei.gauss.handler.statement.DefaultStatmentCHandler.doExecuteOnTimer(SourceFile:172) at com.huawei.gauss.handler.statement.inner.StmtMsgProcessCHandler.preCommonExecute(SourceFile:155) at com.huawei.gauss.handler.statement.inner.StmtMsgProcessCHandler.preExecute(SourceFile:117) at com.huawei.gauss.channel.context.statement.ExecuteContext.preProcess(SourceFile:39) at com.huawei.gauss.jdbc.inner.ChannelExecutor.execute(SourceFile:39) at com.huawei.gauss.jdbc.inner.GaussStatementHelper.execute(SourceFile:80) at com.huawei.gauss.jdbc.inner.GaussStatementHelper.execute(SourceFile:57) at com.huawei.gauss.jdbc.inner.GaussStatementImpl.execute(SourceFile:257) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:330) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:130) ... 12 more
05-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值