[Seasar-user:11847] Re: [S2Dao]S2Daoで複数DBへの接続
林 祐一郎
[E-MAIL ADDRESS DELETED]
2007年 11月 29日 (木) 13:34:02 JST
本間さま
お世話になっております。
林祐一郎と申します。
回答ありがとうございます。
以下に、調査結果を記載いたします。
> (2)は、SQL文とテーブル定義を見るとわかるかもしれません。
> 良くあるケースとしては、CHAR(2)のカラムをwhere句で指定する際
> にパラメータが2文字に満たない場合が考えられます。
おっしゃる通りWHERE句の記述を修正したところ正常に取得できました。
> (1)はdiconを見直せば解決できると思います。
DB(A)、DB(B)それぞれにSELECT文を発行するボタンを作成し、
調査してみたところ、 dao.dicon の中で先に include したほうのDB
の方にしか見に行けていないことが分かりました。
(includeする順序を入れ替えると見る事が出来る方が逆になる)
jdbc.dicon や dao.dicon は複製して、それぞれのDB設定しているだけなので
問題があるとすると app.dicon のほうだと思います。
知識不足でいたらないところがあると思いますが、
どうぞよろしくお願いいたします。
-- app.dicon --------------------------- <components>
<include path="dao.dicon"/>
<include path="j2ee.dicon"/>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRe
gister">
<initMethod name="addClassPattern">
<arg>"XXX.db.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">dao.interceptor</property>
<initMethod name="addClassPattern">
<arg>"XXX.db.dao"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRe
gister">
<initMethod name="addClassPattern">
<arg>"XXX.db.manager"</arg>
<arg>".*Mgr"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRe
gister">
<initMethod name="addClassPattern">
<arg>"XXX"</arg>
<arg>".*Business"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.AspectAutoRegister">
<property name="interceptor">j2ee.requiredTx</property>
<property name="pointcut">"update.*,insert.*,execute.*"</property>
<initMethod name="addClassPattern">
<arg>"XXX"</arg>
<arg>".*Business"</arg>
</initMethod>
</component>
<component name="dao1SupportAspectCustomizer"
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptor">"dao1.interceptor"</property>
<initMethod name="addClassPattern">
<arg>"XXX.db.dao.dao1"</arg>
<arg>".*Dao"</arg>
</initMethod>
<initMethod name="addIgnoreClassPattern">
<arg>"XXX.dao.dao2"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component name="dao2SupportAspectCustomizer"
class="org.seasar.framework.container.customizer.AspectCustomizer">
<property name="interceptor">"dao2.interceptor"</property>
<initMethod name="addClassPattern">
<arg>"XXX.db.dao.dao2"</arg>
<arg>".*Dao"</arg>
</initMethod>
<initMethod name="addIgnoreClassPattern">
<arg>"XXX.dao.dao1"</arg>
<arg>".*Dao"</arg>
</initMethod>
</component>
<component name="daoCustomizer"
class="org.seasar.framework.container.customizer.CustomizerChain">
<initMethod name="addCustomizer">
<arg>defaultCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>dao1SupportAspectCustomizer</arg>
</initMethod>
<initMethod name="addCustomizer">
<arg>dao2SupportAspectCustomizer</arg>
</initMethod>
</component>
</components>
-----Original Message-----
From: [E-MAIL ADDRESS DELETED]
[mailto:[E-MAIL ADDRESS DELETED]] On Behalf Of HONMA Hirotaka
Sent: Wednesday, November 28, 2007 11:19 AM
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:11826] Re: [S2Dao]S2Daoで複数DBへの接続
本間@茅場町です。
on Wed, 28 Nov 2007 10:51:05 +0900
in [Seasar-user:11825] Re: [S2Dao]S2Daoで複数DBへの接続
林 祐一郎 <[E-MAIL ADDRESS DELETED]> wrote:
> 切り分けをし、試験をしてみました。
> 結果は、以下のようになりました。
>
> > 複数DB設定ではなく(B)のみへ接続する設定にし、同じクエリを
> > 発行してみる
> >
> (B)のみへの接続に設定したところ、エラーは発生しませんでした。
> しかし、クエリを発行した結果取得件数が3件になるはずのところ
> 1件も取得できていませんでした。
> SQL*Plusで実行した場合には、ちゃんと3件とれてきます。
>
> > dicon設定はそのまま(複数DB設定)にして、(B)にあるテーブルを
> > (A)にも作成してみる
> >
> (B)にあるテーブルを(A)に作成したところ、
> 『ORA-00942: 表またはビューが存在しません。』というエラーは発生しません
でした。
>
> しかし、上記と同じようにSQL*Plusで実行した場合には取得されているはず
> のデータが取得されませんでした。
調査ありがとうございます、
問題は1つかと思っていましたが、ひょっとすると2つあるのかも...
(1) 複数DB接続設定がミスっていて、(A)へ接続している
↑2つめの調査でORA-00942が出なくなったため
(2) SQL自体にも問題がある
↑1つめの調査でSQL*Plusと結果が異なるため
(1)はdiconを見直せば解決できると思います。
(2)は、SQL文とテーブル定義を見るとわかるかもしれません。
良くあるケースとしては、CHAR(2)のカラムをwhere句で指定する際
にパラメータが2文字に満たない場合が考えられます。
_______________________________________________
Seasar-user mailing list
[E-MAIL ADDRESS DELETED]
https://ml.seasar.org/mailman/listinfo/seasar-user
Seasar-user メーリングリストの案内