2

一部のモデルに登録したいBeanPersistListenerを発見しましたが、EbeanやPlayFrameworkからの統合方法に関するドキュメントは見つかりませんでした。

ドキュメントから:

BeanPersistListenerは、クラスパス検索を介して自動的に検出されるか、ServerConfiguration.addEntity()を介してプログラムで追加できます。

どうやら、自動的には見つからないので(Logger.info実装されたメソッドにいくつか追加しましたが、何も表示されませんでした)、ServerConfigurationを介して追加したいのですが、どうすればよいですか?どこ?

また、バージョンの問題だと思います。私が見たところ、BeanPersistListenerはEbean 2.6.0のものですが、実行されているEbean PlayFrameworkのバージョンが見つかりません(2.0.4を使用しています)。

4

2 に答える 2

4

FirstPlay2.0.4はEbeanバージョン2.7.3を使用します[1]

また、リスナーを登録するには、次のドキュメントに示すようにServerConfigStartupを使用してみてください。

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

私はそれをテストしたことはありません、私はそれが試してみる価値があると思います:-)

コメントからの更新:

これらのクラスをmodelsパッケージまたはパッケージの子の下に配置models して、Ebeanがそれらを見つけられるようにする必要があります。

于 2012-12-12T21:33:21.033 に答える
0

PLayFrameworkのBeanPersistListenerに2つの問題があります。

  1. すべてのエンティティに対して独自のBeanPersistListenerを作成する必要があります。私が100のエンティティを持っているときは良くありません。

  2. BeanPersistListenerはバックグラウンドスレッドで起動されます。誰がユーザーだったのかわかりません。

于 2013-06-03T08:15:54.170 に答える