Because the VO's were made a long time ago and I can't be changing them. I
don't feel like extending the VO and creating new datetime properties just to
make it easier for the DB to map. I just think any db column that can be
easily represented in a string should be allowed to do so. This goes for all
integer, string, datetime, time etc db types. I definitely don't think an
InvalidCastException should be thrown seeing how easily a datetime to string
conversion is. It definitely would add more flexibility to IBatis.
Just my thoughts.
> -------Original Message-------
> From: Ron Grabowski <[EMAIL PROTECTED]>
> Subject: Re: smalldatetime to string conversion problem in sql server
> Sent: 13 Mar '06 17:48
>
> I would expect a database column of type SmallDateTime to be mapped to
> a DateTime object...not a string. Why not keep it as a DateTime and let
> your application decide its string representation?
>
> --- Zarar Siddiqi <[EMAIL PROTECTED]> wrote:
>
> >
> > Ok, for now I've fixed this problem by defining a custom type handler
> > since IBatis is expecting a CLR type of DateTime (code below). But
> > somebody please tell me there is a better way of doing this. Isn't
> > IBatis smart enough to know that the date is being casted to a string
> > and behave accordingly?
> >
> > public class SmallDateTimeTypeHandler : ITypeHandlerCallback
> > {
> > public SmallDateTimeTypeHandler() {}
> > public object ValueOf(string nullValue) {
> > return nullValue;
> > }
> >
> > public object GetResult(IResultGetter getter) {
> > if (getter != null) {
> > DateTime dt = (DateTime) getter.Value;
> > return dt.ToString();
> > } else {
> > return null;
> > }
> > }
> >
> > public void SetParameter(IParameterSetter setter, object
> parameter)
> > {
> > string val = (string) parameter;
> > setter.Value = val;
> > }
> > }
> >
> >
> >
> > > -------Original Message-------
> > > From: Zarar Siddiqi <[EMAIL PROTECTED]>
> > > Subject: smalldatetime to string conversion problem in sql server
> > > Sent: 13 Mar '06 15:53
> > >
> > > Hi,
> > >
> > > I'm having problem reading a column which stores a date as
> > smalldatetime in SQL Server.��I can write to the column fine
> using a
> > string property but when I try to read it, I get the error pasted
> > below.����I've already tried to specify the types explicitly
> but that
> > didn't work:
> > >
> > > <result column="ShipDate" property="ShipDate" type="string"
> > dbType="SmallDateTime"/>
> > >
> > > The reason I know it's this column that's the problem is because
> > as soon as I take it out, everything starts to work again.
> > >
> > > Any help is apprecited.��
> > >
> > > Here's the error I get:
> > >
> > > System.InvalidCastException: Specified cast is not valid.
> > >
> > > With the trace:
> > > [InvalidCastException: Specified cast is not valid.]
> > > �� System.Data.SqlClient.SqlDataReader.GetSqlString(Int32 i)
> +46
> > > �� System.Data.SqlClient.SqlDataReader.GetString(Int32 i) +32
> > > ��
> >
>
> IBatisNet.DataMapper.TypeHandlers.StringTypeHandler.GetValueByName(ResultProperty
> > mapping, IDataReader dataReader) +79
> > > ��
> >
>
> IBatisNet.DataMapper.Configuration.ResultMapping.ResultProperty.GetDataBaseValue(IDataReader
> > dataReader) +32
> > > ��
> >
>
> IBatisNet.DataMapper.MappedStatements.MappedStatement.SetObjectProperty(RequestScope
> > request, ResultMap resultMap, ResultProperty mapping, Object& target,
> > IDataReader reader) +235
> > > ��
> >
>
> IBatisNet.DataMapper.MappedStatements.MappedStatement.ApplyResultMap(RequestScope
> > request, IDataReader reader, Object resultObject) +241
> > > ��
> >
>
> IBatisNet.DataMapper.MappedStatements.MappedStatement.RunQueryForObject(RequestScope
> > request, IDalSession session, Object parameterObject, Object
> > resultObject) +133
> > > ��
> >
>
> IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(IDalSession
> > session, Object parameterObject, Object resultObject) +92
> > > ��
> >
>
> IBatisNet.DataMapper.MappedStatements.MappedStatement.ExecuteQueryForObject(IDalSession
> > session, Object parameterObject) +10
> > > �� IBatisNet.DataMapper.SqlMapper.QueryForObject(String
> > statementName, Object parameterObject) +147
> > >
> > >
> > >
> >
>
>