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.
>>