Hibernate Sybase错误不允许从数据类型“VARCHAR”隐式转换为“INT”

Hibernate Sybase错误不允许从数据类型“VARCHAR”隐式转换为“INT”,hibernate,int,sybase,varchar,Hibernate,Int,Sybase,Varchar,我在尝试在应用程序中运行查询时遇到此错误,我不确定原因: Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed. Use the CONVERT function to run this query. at com.sybase.jdbc3.tds.Tds.a(Unknown Source) at com.syb

我在尝试在应用程序中运行查询时遇到此错误,我不确定原因:

Caused by: com.sybase.jdbc3.jdbc.SybSQLException: Implicit conversion from datatype 'VARCHAR' to 'INT' is not allowed.  Use the CONVERT function to run this query.

at com.sybase.jdbc3.tds.Tds.a(Unknown Source)
at com.sybase.jdbc3.tds.Tds.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.ResultGetter.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.nextResult(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.queryLoop(Unknown Source)
at com.sybase.jdbc3.jdbc.SybStatement.executeQuery(Unknown Source)
at com.sybase.jdbc3.jdbc.SybPreparedStatement.executeQuery(Unknown Source)
at com.ibm.ws.rsadapter.jdbc.WSJdbcPreparedStatement.executeQuery(WSJdbcPreparedStatement.java:678)
at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
at org.hibernate.loader.Loader.doQuery(Loader.java:802)
at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
at org.hibernate.loader.Loader.doList(Loader.java:2533)
... 79 more
不,在我的代码中,我试图将VARCHAR转换为INT

数据库视图列->Java类型:

INT --> Integer
VARCHAR --> String
INT --> Long
VARCHAR --> a POJO
FLOAT --> Double
DATE --> Date

是否还有任何其他原因可能导致此错误???

当无法将VARCHAR值括在引号中时,将发生从数据类型“VARCHAR”到“INT”的隐式转换


将INT值括在引号中时,将发生从数据类型“INT”到“VARCHAR”的隐式转换。

在我的例子中,表定义中为少数INT列提供的默认值具有VARCHAR值

例如:


jobCount INT默认值“0”是正确的

在这段C代码中,我使用DB Library DBSMALLINT type搜索VARCHAR列,返回类型也是一个整数,因此我必须用单引号将%d括起来,即“%d”。这足以转换该值,因为在该查询中引号之间的任何内容都将是CHAR

DBSMALLINT region_code;  

dbbind(dbproc, 1, SMALLBIND, (DBINT)0, (BYTE *)&region_code); /* Integer */

sybase_error = False;
    dbfcmd(dbproc, "insert into <table_name> ");
    dbfcmd(dbproc, "select * from <another_table> ");
    /* With quotes, the query searches for Chars instead */
    dbfcmd(dbproc, "where group_code = '%d' ", region_code); /* Quotes in '%d' */
    dbsqlexec(dbproc);
    while (dbresults(dbproc) != NO_MORE_RESULTS)
      continue;

请输入查询和一些代码。