[Seasar-user:20287] Re: [DBFlute]OracleでDATE型カラムのインデックスが利用されない

しゃってん [E-MAIL ADDRESS DELETED]
2010年 10月 25日 (月) 09:43:37 JST


しゃってんです。

> Connection con = dataSource.getConnection();
> PreparedStatement ps = con.parepareStatement(...);
> ((OraclePreparedStatement) ps).setDATE(1, date);
>
> ってできると思いますが。。。
> OracleConnection が必要でした?
最初上記の用にしてPreparedStatementを取得しようとして失敗いたしました。
(ClassCastExceptionが発生。)

Connection及びPreparedStatementがWrapperクラス(委譲クラス?)となっていたため、
OraclePreparedStatementに直接キャストすることができませんでした。

PreparedStatementWrapperにセットされているオリジナルのPreparedStatementを
取得することもできなかったため、コネクションの段階でオリジナルを取得するようにしました。


2010年10月22日18:00 Koichi Kobayashi <[E-MAIL ADDRESS DELETED]>:
> 小林 (koichik) です.
>
> Date: Fri, 22 Oct 2010 13:31:19 +0900
> From: しゃってん <[E-MAIL ADDRESS DELETED]>
> Subject: [Seasar-user:20273] Re: [DBFlute]OracleでDATE型カラムのインデックスが利用されない
>
>> で実行した場合、時刻まで考慮された検索結果が取得され
>> INDEX RANGE SCAN で検索が実行されました。
>
> 確認ありがとうございました。
>
>> > ((OraclePreparedStatement) ps).setDATE(index, new DATE(date));
>> #
>> # org.seasar.extension.dbcp.impl.ConnectionPoolImpl を利用している場合、
>> # Connection connection =
>> ((ConnectionWrapperImpl)dataSource.getConnection()).getPhysicalConnection();
>> # としないとClassCastExceptionとなるんですね。。。
>
> S2DBCP の Connection をそのまま使っても
>
> Connection con = dataSource.getConnection();
> PreparedStatement ps = con.parepareStatement(...);
> ((OraclePreparedStatement) ps).setDATE(1, date);
>
> ってできると思いますが。。。
> OracleConnection が必要でした?
>
>
> --
> <component name="koichik">
>    <property name="fullName">"Koichi Kobayashi"</property>
>    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
>    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
>    <property name="twitter">"http://twitter.com/koichik"</property>
> </component>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


Seasar-user メーリングリストの案内