2012-12-12 45 views
2

我發現BeanPersistListener,我想註冊一些我的模型,但我沒有找到任何文件,從Ebean或PlayFramework如何整合它。PlayFramework,如何註冊BeanPersistListener?

從文檔:

甲BeanPersistListener是經由任一類路徑搜索自動找到或可以經由ServerConfiguration.addEntity編程方式添加()。

顯然,它不會自動發現(我加了一些Logger.info在實現的方法,並沒有被證明),所以我想通過ServerConfiguration添加它,而是如何?哪裏?

我也懷疑它是一個版本問題。從我所看到的,BeanPersistListener來自Ebean 2.6.0,但我找不到哪個版本的Ebean PlayFramework正在運行(我正在使用2.0.4)。

任何幫助將非常感謝!

謝謝:)

回答

3

首先播放2.0.4使用Ebean版本2.7.3 [1]

和註冊您的聽衆,你可以嘗試使用ServerConfigStartup如本documentation

package models; 

import com.avaje.ebean.config.ServerConfig; 
import com.avaje.ebean.event.ServerConfigStartup; 
import com.avaje.ebean.event.BeanPersistListener; 

public class MyServerConfigStartup implements ServerConfigStartup { 
    @Override 
    public void onStart(ServerConfig serverConfig) { 
     serverConfig.add(new BeanPersistListener() { 
      .... 
     }); 
    } 
} 

我從來沒有測試,我認爲這是值得:-)

從COMME更新一試nts:

您需要將這些類放在models包或models包的子包中,以便Ebean可以找到它們。

+0

太棒了! Ebean版本和鏈接爲+1。我會試着接受你的回答(或者如果我不能使它成功的話,請發表評論) –

+1

Soooo我添加了你的代碼。有趣的是,它只在模型包中執行(我首先在其他地方添加了它)。我知道是因爲我添加了一些Logger.info來指示哪些模型已經註冊了。在我的Listener類中,我在每個實現的方法中都添加了Logger.info。但無論我所說(插入/更新/刪除),都沒有記錄,所以沒有被調用。任何想法爲什麼? –

+1

就是這樣!我知道爲什麼:您需要將偵聽器和ConfigStartup類放入'models'包(或''models'包的子元素,**包括偵聽器!)。它現在的作品:) –

0

我看到了兩個問題BeanPersistListener在遊戲框架:

  1. 我必須爲每個實體自己BeanPersistListener。當我有100個實體時不太好。

  2. BeanPersistListener在後臺線程中被觸發。我沒有誰是用戶的信息。