[Seasar-user:21231] Doma で Mssql2008Dialect

近澤 英 [E-MAIL ADDRESS DELETED]
2011年 12月 23日 (金) 14:56:10 JST


お世話になります。
近澤と申します。

Doma 1.20.0 を利用させて頂いております。

SQLServer2008 の Mssql2008Dialect 利用時に、
うまく動作しないので質問させてください。

select するとき、SelectOptions.get().forUpdate() を指定すると、
次に同じSQLを発行した際に with句 が2つ指定されてしまいます。

SQLは非常に単純な、下記のような内容です。
select a
from b
where c = /* cond */null

ログを吐くと、2回目以降の呼び出しは
select a
from b
with (updlock, rowlock) with (updlock, rowlock) where  c = '1'
となってしまっています。

すこしデバッグしたところ、sqlNode のキャッシュに with句付でキャッシュ
されているようですが、これが関係あるかはわかりません。。

ただ、2回目以降は、forUpdate 無しで呼び出しても
with句が付いているようです。

比較の為、PostgreSQL の Dialect で試したところ
こういった現象は発生しませんでした。

Mssql2008Dialect では何か特別な指定が必要であれば
ご教示頂きたいです。

お手数おかけして申し訳ございませんが、
宜しくお願い致します。

-- 
近澤


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