[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 メーリングリストの案内