2012-02-28 74 views
-1

我有一個簡單的網絡應用程序與數據庫與兩個表。JPA當數據庫被修改外部

的管理員可以手動直接從SQL腳本(例如與phpMyAdmin)和我的web應用修改的第一表應寫入第二表的一些數據此編輯之後。

我可以做到嗎?

+0

是否要將數據存儲到兩個表中? – 2012-02-28 16:13:28

+0

我已將預加載的數據放入第一個表格。當用戶編輯數據(插入,刪除或更新)時,我的應用程序應在第二個表中寫入一行。 – CeccoCQ 2012-02-28 16:16:52

回答

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()); 
    } 

} 

這將第二個實體存儲到另一個表,如果第一個被修改。

編輯: 觸發器無法啓動JPA代碼。這不是JPA的一部分。

Oracle數據庫內的觸發可開始一塊Java代碼作爲Java觸發。

我假設你正在使用的是MySQL數據庫,所以你必須在databaselevel創建觸發器的一個timerservice將輪詢第二個表更改。

+0

好的,但只有當我直接從我的應用程序更改數據時才能使用。如果我從第三方應用更改行,此方法不起作用。 – CeccoCQ 2012-02-28 16:24:45

+1

然後你必須在你的數據庫中創建一個觸發器。 – 2012-02-28 16:25:53