2

JPAEntityListenerに次のメソッドがあります。

@PostPersist
    void onPostPersist(Pli pli) {
        EvenementPli event = new EvenementPli();
        event.setPli(pli);
        event.setDateCreation(new Date());
        event.setDateEvenement(new Date());
        event.setType(TypeEvenement.creation);
        event.setMessage("Création d'un pli");
        event.persist();
    }

基本的に、エンティティEvenementPliのインスタンスが永続化されるたびにインスタンスを永続化することによってイベントを作成しようとしています。Pli

問題は、その時点event.persist();でPli行がデータベースにないため、Mysqlが制約について文句を言うことです。

誰か助けてもらえますか?

4

1 に答える 1

4

適切な解決策は、EvenementPliの永続化が他のエンティティの@PostPersistコールバックメソッド以外の場所で発生するようにアプリケーションを再設計することです。JPA 2.0仕様によると、このような操作はライフサイクルコールバックメソッドで機能することが保証されていません。

一般に、ポータブルアプリケーションのライフサイクルメソッドは、EntityManagerまたはQuery操作を呼び出したり、他のエンティティインスタンスにアクセスしたり、同じ永続コンテキスト内の関係を変更したりしないでください。

于 2012-08-28T10:42:07.553 に答える