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

kubo [E-MAIL ADDRESS DELETED]
2010年 3月 9日 (火) 11:18:23 JST


久保(jflute)です。

大塚さん、ご報告ありがとうございます。
なにはともあれ回避できたとのことで良かったです。
このスレッド自体がとても意義のある(情報の豊富な)
ものとなりました。ありがとうございます。

> 今回はシノニム経由にての確認まで至りませんでしたが、ビューでエラーと
> なっている経緯がありますので、難しかったかもしれません。
(もしかしたら)参照先をクォートした状態で
オブジェクト作成すればいけるかもしれませんね。


#
# それにしても日本語名のテーブル自体が
# サポートされてなかったんですね(Oracle)。
# やはり、海外製品のDBで和名テーブル・カラムは
# (避けられるなら)避けるのが無難なんでしょうね。
#

2010/3/9  <[E-MAIL ADDRESS DELETED]>:
> 久保様
>
> お世話になります。大塚です。
> 返信が遅くなり申し訳ありません。
>
> 結果から申しますと、更新処理、登録処理は成功いたしました。
> 以下、詳細です。
>
> 久保様がおっしゃられたようにEntityのテーブル属性の値を
> ダブルコーテーションで囲むことで成功いたしました。
>
> 成功方法
> <Table("""T_ユーザーマスタ""")> _
>
> 私が最初に試していたのは
>
> <Table(""T_ユーザーマスタ"")> _
>
> としていたのですが、これではVB側のコンパイルエラーが出てしまい、
> 実行すらできない状態にあって悩んでおりました。
> できるとの返信をいただき、再度検討しなおし、実行してみたところうまくできました。
> ありがとうございました。
>
> ちなみに今回の件についてはテーブル名のみの対応で大丈夫のようです。
> フィールド名に長音記号が入っていた場合であっても、
> 特に登録、更新処理に問題はありませんでした。
> (フィールド名 例:ユーザー名)
>
> ちなみに、ADO.NET直接利用の場合についてですが、これはうまくいきました。
> ただし、この場合でも長音記号を使用している日本語のテーブル名、フィールド名
> についてはダブルコーテーションで囲む必要があります。
> また、ODPのバージョンですが、「ODP.NET 2.0 11.1.0.7.20」にて実行いたしましたが、
> 結果としては最初に記載した方法(ダブルコーテーションで囲む)を行わない限り、
> エラーとなってしまいます。
>
> 今回はシノニム経由にての確認まで至りませんでしたが、ビューでエラーと
> なっている経緯がありますので、難しかったかもしれません。
>
> 以上、報告をさせていただきました。
> このたびはありがとうございました。
> 今後ともよろしくお願いいたします。
>
> 大塚
>
>>久保(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 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 メーリングリストの案内