[Seasar-user:15119] Re: 【S2JDBC】データのinsert後にselectできないことがある

Yasuo Higa [E-MAIL ADDRESS DELETED]
2008年 7月 23日 (水) 14:50:23 JST


ひがです。

> 岡田と申します。
> 
> アプリケーションサーバに2個のSeasar2/SAStrutsアプリケーションを配備し、
> 
>   1) Webアプリケーション1でS2JDBCを使ってデータをinsert
>>   2) Webアプリケーション2をHTTPリクエスト呼び出し
>   ↓
>   3) Webアプリケーション2で、先ほどinsertしたデータを
>      S2JDBCを使ってselect
> 
> という手順で処理を行っています。
> このとき、たまに、1)でinsertしたデータが取得できないという現象が
> 発生しております。(再現性低)

1のinsertされてからコミットされる間に、3が実行されると
起こりますね。
発生したときのログがあれば確認してみると良いかも。
JBossのトランザクションマネージャを使っているなら、
トランザクションのログも出力されている必要があります。

> 現象の発生後、データベースを確認してみても、指定のIDに対応する
> データそのものは正しく追加されており、SQLを発行すると
> 取得することができます。
> また、一度取得できなかったデータを、再度select処理のメソッドを
> 通して取得することも可能です。
> 
> この現象の原因、または何か手がかりとなりそうなヒントなど
> ありましたら、いただけないでしょうか。
> 
> --------------------------------------------------------
> OS          :Windows2003Server/WindowsXP で再現確認済み
> JRE         :1.6.0_03
> APサーバ    :JBoss 4.0.3 SP1
> DB          :PostgreSQL 8.3.1
> S2Container :2.4.24
> SAStruts    :1.0.1
> --------------------------------------------------------
> 
> [insert部分のコード]
> private JdbcManager jdbcManager;
>   ...
> public ModelServerAccessor(JdbcManager manager) {
>   this.jdbcManager = manager;
> }
>   ...
> this.jdbcManager.insert(entity).excludesNull().execute();
> 
> [select部分のコード]
> private JdbcManager jdbcManager;
>   ...
> public ModelServerAccessor(JdbcManager manager) {
>   this.jdbcManager = manager;
> }
>   ...
> OriginalFile entity = this.jdbcManager
>   .from(TemporaryFolder.class)
>   .where("id = ?", id)
>   .getSingleResult();
> ※このentityがnullとなる
> 
> [Entity]
> @Entity
> @Table(name = "ORIGINAL_FILE_DATA")
> public final class OriginalFile {
> 
>     @Id
>     @GeneratedValue(strategy = GenerationType.SEQUENCE,
>         generator = "ORIGINAL_FILE_GEN")
>     @SequenceGenerator(name = "ORIGINAL_FILE_GEN",
>         sequenceName = "SEQ_ORIGINAL_FILE_DATA_ID")
>     public int id;
> 
>     ...
> 
> }
> 
> よろしくお願いいたします。
> 
> -- 
> Ikue OKADA <[E-MAIL ADDRESS DELETED]>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 


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