2

我发现了我想注册到我的一些模型的BeanPersistListener ,但是我没有从 Ebean 或 PlayFramework 中找到任何关于如何集成它的文档。

从文档中:

BeanPersistListener 可以通过类路径搜索自动找到,也可以通过 ServerConfiguration.addEntity() 以编程方式添加。

显然,它不是自动找到的(我Logger.info在实现的方法中添加了一些,但没有显示任何内容),所以我想通过 ServerConfiguration 添加它,但是如何添加呢?在哪里?

我也怀疑是版本问题。据我所见,BeanPersistListener 来自 Ebean 2.6.0,但我找不到正在运行的 Ebean PlayFramework 版本(我使用的是 2.0.4)。

4

2 回答 2

4

First Play 2.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

我在 PLAY 框架中看到 BeanPersistListener 存在两个问题:

  1. 我必须为每个实体创建自己的 BeanPersistListener。当我有 100 个实体时不好。

  2. BeanPersistListener 在后台线程中触发。我不知道谁是用户。

于 2013-06-03T08:15:54.170 回答