[seasar-dotnet:1574] Re: DBの日本語表記でのエラー について

kubo [E-MAIL ADDRESS DELETED]
2010年 3月 9日 (火) 01:37:37 JST


久保(jflute)です。

"とにかくクォートすれば実行できる" と仮定しての話ですが、

DBFlute経由のS2Daoにおいてですが、
Entityのテーブル属性の値をクォートして、
登録・更新処理共に正常に動作しました。
(ログの表示用SQLでテーブル名がクォートされている)

S2Daoを拡張しているので全く同じとは言えませんが、
テーブル属性の値をクォートするというのは
試す価値はありそうです。

>>><4>
>>>シノニムを作って、シノニム経由で実行できるかどうか
>>>お試し下さい。もし、それで実行できるなら回避方法の
>>>一つになるかと思います。(後はビューもですね)
>> ビューを使用して行いましたが、実行できませんでした。
>> (「T_ユーザーマスタ」を「V_USER」にして実行)
> なるほど、そうですか。
> 引き続き、シノニムのお願いします。(ダメそうだなぁ...)
参照先をクォートしたビューや、参照先をクォートしたシノニムも
試してみて下さい。(select * from "T_ユーザーマスタ" とか)

2010/3/8 kubo <[E-MAIL ADDRESS DELETED]>:
> 久保(jflute)です。
>
>>><1>
>> 検索はテーブル名をダブルコーテーションで囲むことで動作しています。
> 了解しました。
>
>>><2>
>>>S2経由じゃないやり方で、検索・更新ができますでしょうか?
>>>SQLツール(SQL*Plus)、そして、ADO.NET直接利用の場合。
>> 検索・更新処理ともに問題なくできます。
>> ちなみにツールは「Object Browser for Oracle Ver.11.0.0.0」を使用しています。
> これはダブルコーテーションを囲ったら実行できたということでしょうか?
> (それともObject Browserが気を利かせて内部的に囲ってるとか!?)
> 引き続き、ADO.NET直接利用をお願いします。
>
>>><4>
>>>シノニムを作って、シノニム経由で実行できるかどうか
>>>お試し下さい。もし、それで実行できるなら回避方法の
>>>一つになるかと思います。(後はビューもですね)
>> ビューを使用して行いましたが、実行できませんでした。
>> (「T_ユーザーマスタ」を「V_USER」にして実行)
> なるほど、そうですか。
> 引き続き、シノニムのお願いします。(ダメそうだなぁ...)
>
>
> とにかくダブルクォーテーションで囲うことで回避ができるなら、
> 登録も更新も外だしSQLで回避することができるかと思います。
> (もちろん、テーブル数が多いとかなり面倒ですが...)
>
> もしくは、テーブル属性の値にダブルクォーテーション入りの
> テーブル名を入れることで回避できるかもしれません。
> (すいませんが試していませんので単なる推測です)
> 昔Java版のS2Daoでそういう話があって
> 対応してたようなしてないような...
>
>
> 2010/3/8  <[E-MAIL ADDRESS DELETED]>:
>> 久保様
>>
>> お世話になります。大塚です。
>> 下記について回答いたします。
>> 取り急ぎ、現在確認できる範囲を記載いたしました。
>>
>>><1>
>>>発生するのは、更新処理だけでしょうか?
>>>(検索や登録はうまく動作しますか?)
>> 検索はテーブル名をダブルコーテーションで囲むことで動作しています。
>> (SQL例:SELECT * FROM "T_ユーザーマスタ")
>> ダブルコーテーションで囲まないと、データがうまく取得できなかったためです。
>> (最初のメールで記載しておらず、すいません)
>>
>> また、登録処理については更新時と同じエラーとなり実行できませんでした。
>>
>>><2>
>>>S2経由じゃないやり方で、検索・更新ができますでしょうか?
>>>SQLツール(SQL*Plus)、そして、ADO.NET直接利用の場合。
>>
>> 検索・更新処理ともに問題なくできます。
>> ちなみにツールは「Object Browser for Oracle Ver.11.0.0.0」を使用しています。
>>
>>><3>
>>>ODPのバージョンって最新でしょうか?
>>>もし、最新じゃないなら最新でお試し下さい。
>> 現在、すぐに確認できる状態にできませんので、確認後、改めて返信したく思います。
>>
>>><4>
>>>シノニムを作って、シノニム経由で実行できるかどうか
>>>お試し下さい。もし、それで実行できるなら回避方法の
>>>一つになるかと思います。(後はビューもですね)
>> ビューを使用して行いましたが、実行できませんでした。
>> (「T_ユーザーマスタ」を「V_USER」にして実行)
>>
>> その時のエラーも
>> [EDAO0009]V_USERDto
>> Seasar.Dao.PrimaryKeyNotFoundRuntimeException' の初回例外が Seasar.dll で発生しました。
>> となっておりました。
>>
>> シノニム経由については未確認ですので、これも改めて確認後、返信したいと思います。
>>
>> 以上、よろしくお願いいたします。
>>
>> 大塚
>>
>>
>>>久保(jflute)です。
>>>
>>>ありがとうございます。
>>>http://otn.oracle.co.jp/forum/message.jspa?messageID=35021426
>>>
>>>などを見ると、単にPKのメタデータ取得だけの問題じゃなさそうですね。
>>>(PKのメタデータだけの問題ならDBFlute使って回避できるかなと
>>>思ったのですが、多分すぐ次の処理で同じくエラーになるのかも...)
>>>
>>><1>
>>>発生するのは、更新処理だけでしょうか?
>>>(検索や登録はうまく動作しますか?)
>>>
>>><2>
>>>S2経由じゃないやり方で、検索・更新ができますでしょうか?
>>>SQLツール(SQL*Plus)、そして、ADO.NET直接利用の場合。
>>>
>>><3>
>>>ODPのバージョンって最新でしょうか?
>>>もし、最新じゃないなら最新でお試し下さい。
>>>
>>><4>
>>>シノニムを作って、シノニム経由で実行できるかどうか
>>>お試し下さい。もし、それで実行できるなら回避方法の
>>>一つになるかと思います。(後はビューもですね)
>>>
>>>2010/3/8  <[E-MAIL ADDRESS DELETED]>:
>>>> 久保様
>>>>
>>>> お世話になります。
>>>> 返信ありがとうございます。
>>>>
>>>> 下記項目に対して記載いたします。
>>>>
>>>>>すいません、取り急ぎ環境の確認ですが、
>>>>>"S2Dao.NETを利用している"
>>>>>でよろしいでしょうか?
>>>>
>>>> S2Dao.NETを利用しております。
>>>>
>>>>>あと、OracleのDataProviderの種類と
>>>>>バージョンも提示して頂けると助かります。
>>>>
>>>> OracleのDataProviderの種類は
>>>> 「ODP for .NET 2.0 10.2.0.2.20」
>>>> を使用しています。
>>>>
>>>> 以上です。
>>>> よろしくお願いいたします。
>>>>
>>>> 大塚
>>>>
>>>>
>>>>>久保(jflute)です。
>>>>>
>>>>>大塚さん、こんにちは
>>>>>
>>>>>> OS:WindowsXP
>>>>>> VisualStudio2008 VB.NET
>>>>>> Oracle 11g(OS:Windows2008)
>>>>>> S2Container.NET 1.3.17
>>>>>すいません、取り急ぎ環境の確認ですが、
>>>>>"S2Dao.NETを利用している"
>>>>>でよろしいでしょうか?
>>>>>あと、OracleのDataProviderの種類と
>>>>>バージョンも提示して頂けると助かります。
>>>>>(メタデータ取得するところでエラーになっているようなので)
>>>>>
>>>>>2010/3/8 〓<[E-MAIL ADDRESS DELETED]>:
>>>>>> お世話になっております。
>>>>>> 大塚と申します。
>>>>>>
>>>>>> 現在、下記開発環境にて開発を行っております。
>>>>>> OS:WindowsXP
>>>>>> VisualStudio2008 VB.NET
>>>>>> Oracle 11g(OS:Windows2008)
>>>>>> S2Container.NET 1.3.17
>>>>>>
>>>>>>
>>>>>> DBのテーブル名、フィールド名とも日本語を使用しております。
>>>>>> そこでテーブル名に長音記号が入っているテーブルについて更新処理の際に
>>>>>> 下記のエラーが出てしまい、更新できません。
>>>>>>
>>>>>> エラーが起こるテーブル名の例:T_ユーザーマスタ
>>>>>> エラー内容:[EDAO0009]T_ユーザーマスタDto
>>>>>> Seasar.Dao.PrimaryKeyNotFoundRuntimeException' の初回例外が Seasar.dll で発生しました。
>>>>>>
>>>>>> 日本語であってもテーブル名に長音記号が入っていない場合は更新処理が成功します。
>>>>>> 成功するテーブル名の例:会社マスタ
>>>>>>
>>>>>> ちなみにフィールド名に長音記号が入っている場合は問題なく、更新処理は行われます。
>>>>>>
>>>>>> 過去のソフトのリプレイスのためできる限りテーブル名、フィールド名を変更しないようにと
>>>>>> 考えております。
>>>>>>
>>>>>> テーブル名を変更せずに更新できる方法はあるのでしょうか?
>>>>>>
>>>>>> お忙しい中、申し訳ありませんが、よろしくお願いいたします。
>>>>>>
>>>>>> 大塚
>>>>>>
>>>>>> _______________________________________________
>>>>>> seasar-dotnet mailing list
>>>>>> [E-MAIL ADDRESS DELETED]
>>>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>>>
>>>>>_______________________________________________
>>>>>seasar-dotnet mailing list
>>>>>[E-MAIL ADDRESS DELETED]
>>>>>https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>> _______________________________________________
>>>> seasar-dotnet mailing list
>>>> [E-MAIL ADDRESS DELETED]
>>>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>>>
>>>_______________________________________________
>>>seasar-dotnet mailing list
>>>[E-MAIL ADDRESS DELETED]
>>>https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>> _______________________________________________
>> seasar-dotnet mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>>
>


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