[Seasar-user:16703] Re: ロール名とスキーマ名が異なる場合にS2JDBCでException が発生する

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 1月 21日 (水) 16:30:20 JST


小林 (koichik) です.

Date:    Wed, 21 Jan 2009 11:46:56 +0900
From:    HIDEKI Naita <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:16697] ロール名とスキーマ名が異なる場合にS2JDBCでException が発生する

>  先日PostgreSQL-8.3.5 にてスキーマ名とロール名が異なる状態で
>  データ挿入を行ったところ以下のような Exception が発生しました。
>  (テーブル名は伏せました)
> javax.servlet.ServletException: org.seasar.framework.exception.SQLRuntimeException: [ESSR0072]SQLで例外(SQL=[select currval('XXXX_seq')], Message=[[ESSR0072]SQLで例外(SQL=[select currval('XXXX_seq')], Message=[0], ErrorCode=42P01, SQLState={3})が発生しました : [SQLで例外(Message=[ERROR: relation "XXXX_seq" does not exist], ErrorCode=0, SQLState=42P01)が発生しました。], [ERROR: relation "XXXX_seq" does not exist], ErrorCode=0, SQLState=42P01)が発生しました
> 
>  接続にはS2JDBCを利用させていただいております。
> 
>  select currval する際にスキーマ名を考慮しない
>  (デフォルトのスキーマ名にする)ため発生しているということだと思います。
> 
>  データベースのロール名とスキーマ名が異なる状態になったのは、
>  ロール名を変えたかっただけで、実害は無いのですが、
>  INSERT時にはスキーマ名を考慮しているのにID生成時にはしていないのはなんでかなぁと
>  思いまして連絡させていただきました。

@Table の schema 要素や catalog 要素で指定した
値が @SequenceGenerator で反映されないということ
でしょうか?

これについては JPA2.0 public review で
@SequenceGenerator に schema/catalog 要素が
追加になっているので,@Table から値を引き継ぐ
ものではないように思われます.

JPA1.0 (EJB3.0というべきか) では @SequeceGenerator に
schema/catalog 要素がないため,現状の S2JDBC で
どうすべきか悩ましいのですが,とりあえずは 
schemaName 要素に修飾した名前を指定してみてください.



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