[seasar-dev:643] Re: [S2Dao][S2Dao.NET]ID 属性の複数DBMS対応の修正について

Seto Azusa azusa @ fieldnotes.jp
2007年 2月 18日 (日) 02:31:21 JST


せとあずさです。

On Sun, 18 Feb 2007 01:53:03 +0900
Ryo Miyagi <rmiyax @ yahoo.co.jp> wrote:

> あと、S2Dao.Javaで
> @Ids({
>    @Id(value = IdType.IDENTITY)
>    @Id(value = IdType.SEQUENCE, sequenceName = "myseq")
>    @Id(value = IdType.SEQUENCE, sequenceName = "myseq", dbms="oracle")
> })
> のような記述をした場合、
> S2Dao.NETでは、次の優先順位でIDを返すようにしています。
> 
> 1. @ IDで指定したdbmsが実行中のDBMSと一致。
> 2. @ IDで指定したIDTypeが実行中のDBMSで対応。
> 例:
> ・IDENTITYに対応しているMySQLで実行した場合、
>   @Id(value = IdType.IDENTITY)を返す。
> ・SEQUENCEに対応しているPostgreSQLで実行した場合、
>   @Id(value = IdType.SEQUENCE, sequenceName = "myseq")を返す。
> ・SEQUENCEに対応しているOracleで実行した場合、
>   @Id(value = IdType.SEQUENCE, sequenceName = "myseq", dbms="oracle")を返す。
> ・IDENTITYとSEQUENCEに対応しているH2で実行した場合、
>   @Id(value = IdType.SEQUENCE, sequenceName = "myseq")を返す。
> 

あーなるほど。

> S2Dao.Javaでは、どうしますか?
> なるべく仕様をあわせたほうがいいので、
> S2Dao.NETはS2Dao.Javaの仕様に合わせる形になると思います。
> 

現状の実装としてはこうなっています。
1. @IDで指定したdbmsが実行中のDBMSと一致した@IDを返す。
2. 上記のように、dbmsが指定されていない@IDが複数ある場合は、
   org.seasar.dao.annotation.tiger.Ids#value が「最後に」返す@IDを返す。

S2Dao.NETと揃えたいとは思いますが、コミッタ間で調整したいので、
少々お時間をください。


-- 
せとあずさ
azusa @ fieldnotes.jp
http://www.fieldnotes.jp/d/



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