谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

values IDENTITY_VAL_LOCAL()でnullが返ってくる。

S2Dao + Derbyで、IDアノテーションを使ってinsertした後に、
insertしたオブジェクトに自動生成された主キーの値が設定されるはずなんだけど
なぜかnullが設定されてしまう。


どうもinsertした後にS2Daoが「values IDENTITY_VAL_LOCAL()」した時に
(本来、主キーの値が返るべきなのに)nullが返ってきているみたい。


おかしいな、ちょっと前までは、出来てたはずなんだけど。
JARも差し替えてないから、環境が変わったとは思えないし、
どっかにコーディングミスがあると思うんだけど。


詳細は今から調べて後で書く。


(追記1)
ij.batを叩いて、コンソールからinsert → values IDENTITY_VAL_LOCAL() で
正しく主キーの値を取得できることを確認。
あ、もしかして、S2Daoに入る前(サービス層)で、
beginTransしてないのかな???


(追記2)
ビンゴ。
RequiredTx掛けてるつもりなのに、
RequiredInterceptorが呼ばれてないや。


(追記3)
Serviceインターフェースをなくしたから、
pointcutを指定しなきゃいけないのに、指定してなかったよ。


だからTransactionがbeginされず、
insert後にvalues IDENTITY_VAL_LOCAL()しても取得できなかったと。
解決、解決。