[seasar-dotnet:526] Nullableカラムの自動生成 Insert、Updateで型キャストエラー

KIYOSUE Minoru [E-MAIL ADDRESS DELETED]
2007年 7月 1日 (日) 23:37:18 JST


度々の質問で大変恐縮に存じます、清末です。

DAOのS2UnitTestを開始し、Null可の項目を作成し、実行したところ
次のエラーとなってしまいます。

failed: [ESSR0071]SQLで例外が発生しました。理由は
System.InvalidCastException: 型 'System.Int32' のオブジェクトを型
'Nullables.INullableType' にキャストできません。
   場所 Seasar.Extension.ADO.Types.NHibernateNullableBaseType
                       .GetBindValue(Object value)
   場所 Seasar.Extension.ADO.Types.BaseValueType.BindValue
     (IDbCommand cmd, String columnName, Object value,
           DbType dbType, ParameterDirection direction)
   場所 Seasar.Extension.ADO.Types.NHibernateNullableInt32Type
     .BindValue(IDbCommand cmd, String columnName, Object value)
   場所 Seasar.Extension.ADO.Impl.BasicHandler.BindArgs
     (IDbCommand command, Object[] args, Type[] argTypes)
 Seasar.Framework.Exceptions.SQLRuntimeException
 Message: [ESSR0071]SQLで例外が発生しました。理由は
 System.InvalidCastException: 型 'System.Int32' のオブジェクトを型
              'Nullables.INullableType' にキャストできません。
 場所 Seasar.Extension.ADO.Types.NHibernateNullableBaseType
                        .GetBindValue(Object value)
 場所 Seasar.Extension.ADO.Types.BaseValueType.BindValue
    (IDbCommand cmd, String columnName, Object value,
            DbType dbType, ParameterDirection direction)
 場所 Seasar.Extension.ADO.Types.NHibernateNullableInt32Type
    .BindValue(IDbCommand cmd, String columnName, Object value)
 場所 Seasar.Extension.ADO.Impl.BasicHandler.BindArgs
    (IDbCommand command, Object[] args, Type[] argTypes)
 Source: Seasar
 StackTrace:
 場所 Seasar.Extension.ADO.Impl.BasicHandler.BindArgs
     (IDbCommand command, Object[] args, Type[] argTypes)
 場所 Seasar.Dao.Impl.AbstractAutoHandler.Execute
              (IDbConnection connection, Object bean)
 場所 Seasar.Dao.Impl.AbstractAutoHandler.Execute(Object[] args)
 場所 Seasar.Dao.Impl.AbstractAutoStaticCommand.Execute
    (Object[] args)
 場所 Seasar.Dao.Interceptors.S2DaoInterceptor.Invoke
    (IMethodInvocation invocation)
 場所 Seasar.Framework.Aop.Proxy.AopProxy.Invoke(IMessage msg)
 場所 System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke
    (MessageData& msgData, Int32 type)
 場所 NtkProjectCore.dao.INttb64CarDao.Insert(Nttb64CarEntity vo)
 E:\NT2004_01\Projects\NtkTestProject\S2UnitTest\HogeTest.vb(65,0):
 場所 NtkTestProject.S2UnitTest.HogeTest.Hoge()
 Inner Exception
 System.InvalidCastException
 Message: 型 'System.Int32' のオブジェクトを
       型 'Nullables.INullableType' にキャストできません。
 Source: Seasar
 StackTrace:
 場所 Seasar.Extension.ADO.Types.NHibernateNullableBaseType.
    GetBindValue(Object value)
 場所 Seasar.Extension.ADO.Types.BaseValueType.BindValue
    (IDbCommand cmd, String columnName, Object value,
     DbType dbType, ParameterDirection direction)
 場所 Seasar.Extension.ADO.Types.NHibernateNullableInt32Type.
     BindValue(IDbCommand cmd, String columnName, Object value)
 場所 Seasar.Extension.ADO.Impl.BasicHandler.BindArgs
    (IDbCommand command, Object[] args, Type[] argTypes)

同様に、NullableDatetimeを指定したカラムもエラーとなってしまいます。

VS2005 の場合、Nullable を使用しないで、Nullable(Of Int32) を使用した
方が良いのでしょうか?ご教授お願い申し上げます。



seasar-dotnet メーリングリストの案内