[seasar-dotnet:403] 複数のテーブルを結合したsqlのファイルでのデータ取得について

Mai Kawasaki kawasaki @ snapshot.co.jp
2006年 11月 29日 (水) 16:58:43 JST


はじめまして、maiと申します。

現在、複数のテーブルを結合したsqlのファイルとビューのような仮想的なbeanを作成し、
自由にマッピングさせるという方法でデータを取得するプログラムを作成しています。 


現在の環境は以下の通りです。
VB2005、S2Container.NET 1.2.5、S2Dao.NET 1.0.0

プログラムの内容は、以下のような感じです。
---ICustomerDao.vb---------
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Seasar.Dao.Attrs

<Bean(GetType(CustomerBean))> _
Public Interface ICustomerDao
    Function GetList() As IList
End Interface
--------------------------

---ICustomerDao_GetList.sql---
SELECT c.customer_id, c.customer_name, c.user_id, u.user_name
FROM customer_master c, user_master u
WHERE c.user_id = u.user_id
-----------------------------

---CustomerBean.vb----------
    Public Class CustomerBean
        Private _customerId As Integer = 0
        Private _customerName As String = ""
        Private _userId As Integer = 1
        Private _userName As String = ""

        Public Property CustomerId() As Integer
            ---省略---
        End Property
        Public Property CustomerName() As String
             ---省略---
        End Property
        Public Property UserId() As Integer
             ---省略---
        End Property
        Public Property UserName() As String
            ---省略---
        End Property
    End Class
------------------------------

現在の環境では、GetList()を呼び出すとCustomerBeanのリストが正しく取得できるのですが、
先日リリースされました、S2Container.NET 1.2.6、S2Dao.NET 1.0.1
にバージョンを変更すると、IndexOutOfRangeExeptionがキャッチされるようになりました。

ログは以下の通りです。
---ログ-------------------------------
DEBUG  Seasar.Framework.Util.DataSourceUtil
 - 論理的なコネクションを取得しました
DEBUG Seasar.Framework.Util.ConnectionUtil
 - 論理的なコネクションを閉じました
WARN  Seasar.Dao.Impl.BeanMetaDataImpl
 - テーブル(CustomerBean)が見つかりません
DEBUG Seasar.Extension.ADO.Impl.BasicSelectHandler
 - SELECT c.customer_id, c.customer_name, c.user_id, u.user_name
FROM customer_master c, user_master u
WHERE c.user_id = u.user_id
DEBUG  Seasar.Framework.Util.DataSourceUtil
 - 論理的なコネクションを取得しました
DEBUG  Seasar.Framework.Util.ConnectionUtil
 - 論理的なコネクションを閉じました
ERROR  Customer
 - 場所 System.Data.ProviderBase.FieldNameLookup.GetOrdinal(String 
fieldName)
   場所 System.Data.SqlClient.SqlDataReader.GetOrdinal(String name)
   場所 System.Data.SqlClient.SqlDataReader.get_Item(String name)
   場所 Seasar.Extension.ADO.Types.BaseValueType.GetValue(IDataReader 
reader, String columnName)
   場所 
Seasar.Dao.Impl.AbstractBeanMetaDataDataReaderHandler.CreateRow(IDataReader 
reader, IColumnMetaData[] columns)
   場所 Seasar.Dao.Impl.BeanListMetaDataDataReaderHandler.Handle(IDataReader 
dataReader, IList list)
   場所 Seasar.Dao.Impl.BeanListMetaDataDataReaderHandler.Handle(IDataReader 
dataReader)
   場所 Seasar.Extension.ADO.Impl.BasicSelectHandler.Execute(IDbCommand cmd)
   場所 Seasar.Extension.ADO.Impl.BasicSelectHandler.Execute(IDbConnection 
connection, Object[] args, Type[] argTypes)
   場所 Seasar.Extension.ADO.Impl.BasicSelectHandler.Execute(Object[] args, 
Type[] argTypes)
   場所 Seasar.Dao.Impl.SelectDynamicCommand.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)
   場所 ICustomerDao.GetList()
------------------------------------

どうすれば解決できるのかアドバイス頂けませんでしょうか。
長くなってしまい大変申し訳ございませんが、よろしくお願い致します。

-----
 mai
 kawasaki @ snapshot.co.jp




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