[seasar-dotnet:1481] Re: [DBFlute] 外だしSQLのSelectEntityで結果がNULLのときに例外

西山 はじめ [E-MAIL ADDRESS DELETED]
2009年 9月 24日 (木) 18:08:06 JST


西山です。

対応ありがとうございました。

SQLの結果がNULLが戻って来たときに、Int型で受け取った場合に 
Nothingになることが確認できました。

Listでカラムひとつの場合は確認しておりません。

以上よろしくお願いいたしいます。

[2009/09/18 23:34] kubo さんは書きました。:
> 久保(jflute)です。
> 
> DBFlute.NET-0.8.9.5-SNAPSHOTでお試し下さい。
> http://dbflute.net.sandbox.seasar.org/download/dbflute/dbflute-0.8.9.5-SNAPSHOT.zip
> 
> 結局「Dao内部でPlainなListに積んで入り口でGenericなListに」
> という感じでなんとか回避してみました。
> DaoでGenericメソッドにAOPが効かないことが
> 逆に功を奏して意外に修正が少なくて済みました。
> 
> 
> 2009/9/18 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>> 西山です。
>>
>> 了解しました。
>> 重要度は高くありませんのでNVLで回避しておきます。
>>
>>> new List<DateTime?>().Add(null);
>>> は、可能なのに
>>> ((System.Collections.IList)new List<DateTime?>()).Add(null);
>>> が、不可(例外)という挙動のことです。
>> これは確かに納得いかないですね。
>> .NET・・・不思議な動きしますね。
>>
>>
>> [2009/09/18 19:24] kubo さんは書きました。:
>>> 久保(jflute)です。
>>>
>>> ちなみCollectionの特徴とは:
>>>
>>> new List<DateTime?>().Add(null);
>>> は、可能なのに
>>> ((System.Collections.IList)new List<DateTime?>()).Add(null);
>>> が、不可(例外)という挙動のことです。
>>> (納得いかない...)
>>>
>>> 他の方で、この回避策をご存知の方いらっしゃいましたら、
>>> ご教授頂けると助かります。
>>> (共通部分の処理なので、Genericの方は特定出来ず
>>>  Add処理はどうしても汎用的なSystem.Collections.IListで
>>>  取り扱っています)
>>>
>>>
>>> 2009/9/18 kubo <[E-MAIL ADDRESS DELETED]>:
>>>> 久保(jflute)です。
>>>>
>>>> 西山さん、こんばんは
>>>>
>>>> フィードバックありがとうございます。
>>>> こちらでも現象を確認致しました。
>>>> しかしながら、.NETのCollectionの特徴に引っ掛かっていて、
>>>> 一筋縄では行かなそうですね...現状スマートな解決策が
>>>> ちょっと思いついてません。
>>>>
>>>> ひとまずJIRAには登録しました。
>>>> https://www.seasar.org/issues/browse/DBFLUTENET-14
>>>> すぐに解決できないかもしれないので、
>>>> とりあえずはnvlでの回避お願いします。
>>>>
>>>> 2009/9/18 西山 はじめ <[E-MAIL ADDRESS DELETED]>:
>>>>> お世話になっております。
>>>>> 西山です。
>>>>>
>>>>> 外だしSQLのSelectEntityを利用するときに、
>>>>> ・Select句を1カラム指定
>>>>> ・戻り値のEntityを「値型(Integerなど)」
>>>>> にすると、SQLの結果がNULLだったときに例外が発生してしまいます。
>>>>>
>>>>> S2DaoMetaDataExtension.csの、
>>>>> InternalObjectGenericListResultSetHandler.Handleメソッド内で
>>>>> nullをresultListに追加しているからのようです。
>>>>>
>>>>> int?のNullable型もダメなようです。
>>>>>
>>>>> Oracleなので、NVLでNULLが返らないようにしましたが、DBFlute側
>>>>> でNULLを返すようにしてくださると助かります。
>>>>>
>>>>> :環境
>>>>> .NET 2.0
>>>>> VB 2008
>>>>> DBFlute 0.8.9.2
>>>>> Oracle 9.2.0.6
>>>>>
>>>>> :ログ
>>>>> [Exception]
>>>>> System.ArgumentException
>>>>> 値 "" は型 "System.Nullable`1[System.Int32]" ではなく、この
>>>>> 汎用コレクションでは使用できません。
>>>>> パラメータ名: value
>>>>>
>>>>>
>>>>> 以上よろしくお願いいたします。
>>>>> --
>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>> 株式会社フジミック
>>>>> システム開発センター ソフトウェア開発部
>>>>> 西山 創
>>>>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>>>>
>>>>> 〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
>>>>> [TEL]:03-5495-1060
>>>>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>>>>
>>>>> _______________________________________________
>>>>> seasar-dotnet mailing list
>>>>> [E-MAIL ADDRESS DELETED]
>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>
>>>
>>>
>>
>> --
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>> 株式会社フジミック
>>         システム開発センター ソフトウェア開発部
>>  西山 創
>> [E-mail]:[E-MAIL ADDRESS DELETED]
>>
>> 〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
>> [TEL]:03-5495-1060
>> ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
> 
> 
> 


-- 
++++++++++++++++++++++++++++++++++++++++++++++++++++++++
株式会社フジミック 
        システム開発センター ソフトウェア開発部
 西山 創
[E-mail]:[E-MAIL ADDRESS DELETED]
 
〒140-0002 東京都品川区東品川3-32-42 フジテレビ別館7階
[TEL]:03-5495-1060
++++++++++++++++++++++++++++++++++++++++++++++++++++++++



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