12

私はエンティティを持っています:

@Entity
@EntityListeners(MyEntityListener.class)
class MyEntity{ ... }

そしてリスナー:

class MyEntityListener{
    @PrePersist
    @PreUpdate
    public void doSomething(Object entity){ ... }
}

このエンティティ (1.4.1) と EclipseLink には、Spring Data で生成された DAO を使用しています。コードの動作は次のとおりです。

MyEntity entity = new Entity();
entity = dao.save(entity); // the doSomething() is called here
// change something it the entity and save it again
dao.save(entity); // the doSomething() is NOT called here, checked with breakpoint

この問題は2009 年にすでに誰かによって説明されていますが、彼らは解決策を思いつきませんでした。誰かがそれを解決する方法を考えているのだろうか?

4

2 に答える 2

2

2 つの異なる save() に関するトランザクション設定は何ですか?

save()/update()/merge()/persist() の間にはいくつかの違いがあると思います.エンティティの異なるステータス(一時的、永続的、切り離された)については、操作はあなたが思っていたものと同じではありません。アノテーション @PrePersist および @PreUpdate は有効になりませんでした。

于 2013-11-07T17:45:26.283 に答える