[Seasar-user:12796] Re: [S2JDBC]Firebirdで、Sequence自動生成に失敗します。

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2008年 2月 8日 (金) 20:00:09 JST


小林 (koichik) です.

Date:    Fri, 08 Feb 2008 11:49:08 +0900
From:    Fujio Yamagishi <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:12794] [S2JDBC]Firebirdで、Sequence自動生成に失敗します。

> -----------------------------------------------------------------------
> package org.seasar.extension.jdbc.dialect;
>     ...
> public class FirebirdDialect extends StandardDialect {
>     ...
>     @Override
>     public String getSequenceNextValString(final String sequenceName) {
>         return "select RDB$GENERATOR_NAME from RDB$GENERATORS";
>     }
> -----------------------------------------------------------------------
> この SQL を、実行してみましたが、シーケンス番号は得られませんでした。
> 通常は、
> "SELECT GEN_ID(USER_INFO_UI_ID,1) FROM RDB$DATABASE"
> のような SQL を発行してシーケンス番号を取得してます。

ごめんなさい,Firebird では一度モテストしていません.
S2JDBC の Firebird 用 Dialect は Hiberante を参考に
したのですが,それだと動かないのですね.
S2Dao ではご指摘通りの SQL を生成するようになって
いたので,そちらを参考にすればよかったです.無念だ.

> ということで、
> "SELECT GEN_ID(" + sequenceName + ",1) FROM RDB$DATABASE"
> みたいな、return 文になるのでしょうか。ちなみに、'1' は、増分値です。

増分値は create sequence で生成時に指定するのではなく,
値の取得時に指定するのですね.
そんなわけで (どんなわけで?),@SequenceGenerator の
allocateSize (デフォルト 50) を反映するようにしました.

以下に SNAPSHOT をデプロイしたのでご確認ください.

http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.23-SNAPSHOT/s2-framework-2.4.23-20080202.170143-1.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.23-SNAPSHOT/s2-extension-2.4.23-20080208.104145-2.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.23-SNAPSHOT/s2-tiger-2.4.23-20080202.170503-1.jar


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>



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