Hi Andrus, Yes I am running, 3.0.2 (on windows).
The type value I get is "2147483647" (which is the max int obviously) Attached image shows it in the debugger. cheers Mick Fong Simulator Engineer p (08) 9193 8921 m 0413 113 099 f (08) 9192 9111 e [email protected] a PO Box 1380, Broome WA 6725 -----Original Message----- From: Andrus Adamchik [mailto:[email protected]] Sent: Friday, 21 June 2013 4:05 AM To: [email protected] Subject: Re: java.sql.SQLException: Unknown Types value >From checking the sources, I am also assuming 3.0.*: public void setJdbcObject( PreparedStatement st, Object value, int pos, int type, int scale) throws Exception { // if this is a CLOB column, set the value as "String" // instead. This should work with most drivers if (type == Types.CLOB) { st.setString(pos, (String) value); } else if (scale != -1) { st.setObject(pos, value, type, scale); } else { // THIS IS LINE 169 st.setObject(pos, value, type); } } Mick, Could you possibly run this in debugger and tell us what the value of the "type" variable is? Andrus On Jun 20, 2013, at 9:13 AM, Michael Gentry <[email protected]> wrote: > Hi Mick, > > Did you maybe map a CHAR in your Cayenne DbEntity to a VARCHAR column > or vice-versa? I could see this causing a problem. > > We use views just fine with Cayenne and have both CHAR and VARCHAR > mappings (to the appropriate DB types) in Cayenne 3.0. You didn't > mention which version of Cayenne you are using, so I'm guessing 3.0 currently. > > mrg > > > > On Wed, Jun 19, 2013 at 9:11 PM, Mick Fong <[email protected]> wrote: > >> Hi Michael, >> >> The type is definitely a varchar in the view. >> >> The error is when the you are setting the query object for the >> PreparedStatement. It appears that the >> org.apache.cayenne.access.types.CharType is not being recognised as a >> MySQL varchar type. >> >> The exception is thrown from a switch on the parameter SQL type: >> >> switch (targetSqlType) { >> . >> . >> case Types.CHAR: >> case Types.VARCHAR: >> case Types.LONGVARCHAR: >> if (parameterObj instanceof BigDecimal) { >> >> setString(parameterIndex,(StringUtils.fixDecimalExponent(StringUtils. >> consistentToString((BigDecimal) >> parameterObj)))); >> } else { >> setString(parameterIndex, parameterObj.toString()); >> } >> >> break; >> . >> . >> default: >> throw >> SQLError.createSQLException(Messages.getString("PreparedStatement.16" >> ), >> //$NON-NLS-1$ >> SQLError.SQL_STATE_GENERAL_ERROR, getExceptionInterceptor()); } >> >> >> The property value for the message is: >> PreparedStatement.16=Unknown Types value >> >> >> The error occurs just when setting the parameters because the >> CharType is not recognised. >> >> thanks >> >> mick >> >> [Kimberley Training Institute Logo] >> Toll Free: 1300 996 573 | Website: www.kti.wa.edu.au< >> http://www.kti.wa.edu.au> Find us on >> Facebook<http://www.facebook.com/kimberleytraininginstitute> >> >> Please consider the environment before printing this email. >>
