2012-02-28 14 views
-1

私は2つのテーブルを持つデータベースを持つシンプルなweb-appを持っています。データベースが外部で変更されたときのJPA

管理者は、SQLスクリプト(PHPMyAdminなど)から直接最初のテーブルを手動で変更することができ、この編集後に2番目のテーブルに書き込む必要があります。

私はそれを行うことはできますか?

+0

データを2つのテーブルに格納しますか? –

+0

私は最初のテーブルにデータをプリロードしました。ユーザーがデータを編集(挿入、削除、または更新)するとき、私のアプリは2番目のテーブルに行を書き込む必要があります。 – CeccoCQ

答えて

0

あなたは@PrePersist注釈を使用することができます。 http://docs.oracle.com/javaee/5/api/javax/persistence/PrePersist.html

public final class SampleBusinessProcess { 

    @PrePersist 
    private void preperist(final MyObject obj) { 
     entityManager.store(new Object2()); 
    } 

} 

最初の1が変更された場合、これは、別のテーブルに第二の実体を格納します。

編集: トリガーはJPAコードを開始できません。それはJPAの一部ではありません。

Oracleデータベース内のトリガーは、JavaコードをJavaトリガーとして開始できます。

私はあなたがmysqlデータベースを使用していると仮定しているので、databaselevelに、変更のために2番目のテーブルをポーリングするtimerserviceでトリガーを作成する必要があります。

+0

これは私のアプリから直接データを変更した場合にのみ有効ですが、これは動作します。私が第三者のアプリケーションから行を変更した場合、このメソッドは機能しません。 – CeccoCQ

+1

その後、データベースの内部にトリガーを作成する必要があります。 –

関連する問題