こんにちわ。 私は今、java1.8から Butterfly Persistenceを使って oracle11gにアクセスするwebシステムを作っています。 実は困ったことが発生しています。 「 ・4テーブルを結合してSELECTを掛ける ・2回目の操作以降、取得できなくなるテーブルがある。 (そのテーブルの情報が全てnullになる) ・クエリ発行前にブレークポイントで一旦止めてステップ実行すると正常に取得する。 ・クエリ発行後にブレークポイントを設定するとやはりnullになっているが、そのまま、eclipseの式ビューにクエリを発行してる式を入れると正常に取得する。 ・クエリ発行の直前にThred.sleep(2000) を入れると何度やってもセレクトが成功する。(上手くいく、nullにならない) 」 です。 ドライバはoci 64bit butterflyのデータベースマネージャーを使用しています。 知りたい事。 何故取得できないテーブルがあるのか? 何故Thred.sleepを入れると取得できる様になるのか? 経緯 このシステムは、もともとmySQLで作られていて、諸事情によりOracleに変換する必要が出てきました。 その変換係に私が指名されました。 mySQLのlongTextを使っていたので、 最初はOracleのLongにしていました。 最初はbutterflyのオブジェクトDaoで1テーブル毎に取得したのですが 1テーブルなぜか検索結果が0になりした。 そこでコネクションを取得して プリペアドステートメントに切り替えたのですが 改善せず いろいろ調べると jdbcドライバでlongを使うと、 最初に読まなきゃならないとかいろいろ成約があり、ORMapperでlongが怪しいと思い、 そこまで長い文字列入らないと思われるので varchar2(4000)にしました。 が、解決しません。 連続して複数のテーブルにセレクトするのが悪いと思い、 テーブルを結合させて butterflyのマップオブジェクトで取得したのですが やはり該当テーブルがnullになりました。 その時はthinドライバだったので、 ociなら大丈夫かと思いociに変換。 (と言いますのも、試験的に該当箇所をasp.net c#に移植し、全く同じセレクト文を投げると全く問題なく動き、 それがoci接続なのでocIにすれば行けると思いました。 asp.netとc#なら問題なかったのでjavaカテゴリに来ました) しましたが上記のとおりです。 javaVMのメモリが不足したかと思い eclipseからtomcatのメモリを1024mに設定しましたが解決せず。 どなたか似たような現象に遭遇した方や 心当たり有る方いますでしょうか?
↧