[Seasar-user:11484] Re: [Kuina-Dao] dao.persist(entity) で,主キー重複エラーを回避するには?

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 11月 6日 (火) 16:00:15 JST


小林 (koichik) です.

Date:    Tue, 06 Nov 2007 15:33:53 +0900
From:    "Applied_MATSUDA Masaaki" <[E-MAIL ADDRESS DELETED]>
To:       <[E-MAIL ADDRESS DELETED]>
Subject: [Seasar-user:11482] Re: [Kuina-Dao] dao.persist(entity) で,主キー重複エラーを回避するには?

> うむぅ,テーブルロック,有ってもよさそうなのに
> ねぇぇ(泣

ロック用に 1 行だけのテーブル作ってそれを
エンティティにマップすれば同じ粒度になるので
いらないといえばいらないんじゃないでしょうか.
# テーブルロックより SELECT 〜 FOR UPDATE が欲しい

> できればSQLレスで,という目標を掲げてはみたものの,
> 結局はor検索で早速SQL書かねばならないので,まぁ,
> SQLレスというのは早々にあきらめるべきですよね.

RDBMS にアクセスする以上,SQL レスなんて考えても
無意味かと.
SQL をどこにどうやって書く (あるいは組み立てる) か,
というだけですね.

ちなみに,ドキュメントサボってますが Criteria API を
使うと or も扱えます.
DAO のインタフェースだけとはいきませんが,

public abstract class FooDaoImpl implements FooDao {

  public List<Foo> findOr(String a, String b) {
    return select().from(Foo.class, "f")
      .where(or(eq("f.a", a), eq("f.b", b)))
      .getResultList(em);
  }
}

のように書けます.
Criteria API については Javadoc を参照してください.

http://kuina.seasar.org/apidocs/org/seasar/kuina/dao/criteria/CriteriaOperations.html


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>




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