[Seasar-user:6159] Re: 【KuinaDao】バッチ更新について

T.N [E-MAIL ADDRESS DELETED]
2007年 2月 14日 (水) 11:12:06 JST


 お世話になっております。
中村友則です。

Koichi Kobayashi wrote:
> この merger() は不要です.
> 
> JPA の merge() メソッドは,永続コンテキストに
> 管理されていない,分離された (detached) 状態の
> エンティティを,永続コンテキストに結びつけるために
> 使います.
> 
> 上のコードでは,findByParameter() メソッドで取得した
> エンティティは永続コンテキストに管理された (managed)
> 状態であるため,merge() の対象ではありません.
> 
> 管理された (managed) 状態のエンティティは,プロパティを
> 変更するだけでトランザクションのコミット時に自動的に
> (バッチ) 更新されます.
そうだったのですね。
勉強が足りませんでした。

> ただし,管理された (managed) エンティティを merge() に
> 渡しても無視されるだけで,影響はないはずなのでこの現象とは
> 関係ないような気もします.
おっしゃるとおり、merge()を削除しても同様のエラーが発生しました。

> @Entity
> @org.hibernate.annotations.Entity(dynamicUpdate = true)
> public class DtItem {
>   ・・・
> 
> とすれば回避できるかもしれませんが,バッチ更新の
> 効果は小さくなってしまう可能性があります.
こちらもやってみましたが、今度は別のエラーが発生しました。

2007-02-14 10:01:21,140 [http-8080-Processor25] ERROR
org.hibernate.jdbc.AbstractBatcher - Exception executing batch:
org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update
returned unexpected row count from update [0]; actual row count: 3;
expected: 1

> ともあれ (JW),現状ですと複合主キーをやめるか,
> Kuina-Dao を使うことをやめるかした方が無難では
> ないかと思います.
> お試し程度なら構わないのですが.
 やはり複合主キーのせいで上手く動いてないようですね。
DB設計変更かKuina-Dao以外の方法を検討してみようと思います。

 どうもありがとうございました。

中村友則



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