[Seasar-user:8612] Re: [S2Dao]PropertyNotFoundRuntimeExceptionについて

kubo [E-MAIL ADDRESS DELETED]
2007年 6月 24日 (日) 18:16:12 JST


久保(jflute)です。

> > dbfluteを使用して、デフォルトで用意されている
> > insertOrUpdate(entity)メソッドを使用したところ
> > PropertyNotFoundRuntimeExceptionが発生してしまいます。
> > 
> > org.seasar.dao.impl.UpdateModifiedOnlyCommandクラスの
> > createNoUpdateLogMessage(final Object bean, final BeanMetaData bmd)メソッド
> > で発生しているのですが、現状として、logレベルがdebugの場合で、
> > 対象のテーブルの全カラムがPKの場合にのみに発生いたします。
> > 
> > これについて、何か設定に間違いがあって発生してしまうのでしょうか。
> 
> S2Dao側で、PKに _ が含まれているがEntityのプロパティ名に _ が含まれていない
> 場合でlogレベルがdebugの場合に、PropertyNotFoundRuntimeExceptionが発生する
> ことがわかっています。これはS2Daoのバグです。
> 
> ただ、logレベルをINFO以上にしたとしても、S2Daoには「PKのみのテーブルはSQL
> ファイルを書かないと更新できない」という仕様があるので、DBFluteがどういう
> 仕様になっているかは把握してませんが、この制限にどこかでひっかかる気はしま
> す。

神さんがやろうとしているのは、

EntityにSetしたPKがDB上に...
存在する:
    → Update (PKのみテーブルの場合は何の処理もしない)
しない:
    → Insert

ということでしょうか?
それならば特に問題はないと思われます。
(「logレベルをINFO以上にしたとしても」の場合において)


そうではなくて、「PKの列の値自体を更新したい」ということであれば、
S2Daoの「PKのみのテーブルはSQLファイルを書かないと更新できない」
という制限はDBFluteでも全く同じです。
(insertOrUpdate()を利用する状況では考えにくいですが)






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