[DAO-65] Oracleで"パッケージ名.プロシージャ名"形式でPROCEDUREアノテーションを書けるようにする Created: 2007-02-05  Updated: 2007-03-16  Resolved: 2007-03-16

Status: Resolved
Project: S2Dao
Component/s: s2dao
Affects Version/s: 1.0.39
Fix Version/s: 1.0.41-RC1

Type: Improvement Priority: Major
Reporter: manhole Assignee: azusa
Resolution: Fixed Votes: 0
Labels: None
Environment:

oracle10g 10.1.0
s2dao-1.0.39



 Description   

s2dao-1.0.34まではPROCEDUREアノテーションを"パッケージ名.プロシージャ名"形式で記述できていたが、s2dao-1.0.35からは下記のような例外が出るようになってしまった。(おそらくDAO-5の影響)

org.seasar.framework.exception.SRuntimeException:
[EDAO0012]Storedprocedure(PACKAGE_NAME.PROCEDURE_NAME) not found
  at
org.seasar.dao.handler.AbstractBasicProcedureHandler.getProcedureMetaData(AbstractBasicProcedureHandler.java:283)
  at
org.seasar.dao.handler.AbstractBasicProcedureHandler.initTypes(AbstractBasicProcedureHandler.java:126)
  at org.seasar.dao.handler.ProcedureHandlerImpl.initialize(ProcedureHandlerImpl.java:29)
  at org.seasar.dao.impl.DaoMetaDataImpl.setupProcedureMethod(DaoMetaDataImpl.java:266)
  at org.seasar.dao.impl.DaoMetaDataImpl.setupMethodByAnnotation(DaoMetaDataImpl.java:253)
  at org.seasar.dao.impl.DaoMetaDataImpl.setupMethod(DaoMetaDataImpl.java:227)

"パッケージ名.スキーマ名.プロシージャ名"形式ならば動作するが、PL/SQLで書くときのように"パッケージ名.プロシージャ名"形式で記述できるようにしたい。

同様の要望が多数。



 Comments   
Comment by manhole [ 2007-02-20 ]

[Seasar-user:6233]で、動作確認がありました。

Comment by manhole [ 2007-02-14 ]

Oracleの場合はPROCEDUREアノテーションへ

  • "スキーマ名.パッケージ名.プロシージャ名"
  • "パッケージ名.プロシージャ名"
  • "プロシージャ名"

形式で記述できるようにしました。
(Oracle以外では従来どおりの"カタログ名.スキーマ名.プロシジャ名"形式)

(revision 751)

Comment by manhole [ 2007-02-05 ]

対応案です。

Oracleの場合は、

  • PROCEDUREアノテーションが"AAA.BBB"だったら、AAAをパッケージ名、BBBをプロシージャ名、DatabaseMetaData#getUserNameで取れる文字列をスキーマ名として、DatabaseMetaData#getProceduresする
  • Procesureを取得できなかった場合は、従来どおりにAAAをスキーマ名、BBBをプロシージャ名としてDatabaseMetaData#getProceduresする

とするのはどうでしょうか?

Oracleの場合だけで良さそうなので、DbmsインタフェースにgetProcedureを持たせるという実装イメージでいます。

Generated at Tue Apr 15 21:36:13 JST 2025 using Jira 10.5.0#10050000-sha1:9d9d098bb7b67e8dba8da380ba9c3900d82ac3cf.