为了在Play中使用Ebean执行前/后插入/更新/删除操作(isRegisterFor(Class<?> clazz)
,postInsert(BeanPersistRequest<?> request)
,...),我实现了一个类IndexAdapter extends BeanPersistAdapter
。
作品
- app
-- models
--- Car
--- Person
--- House
--- IndexAdapter
-- controllers
--- ...
一切顺利,直到我决定将其转换为Play插件(实际上是一个类以上)。
不起作用
- app
-- plugin
--- IndexAdapter
-- models
--- Car
--- Person
--- House
-- controllers
--- ...
从一个同事那里,我了解到,从
BeanPersistAdapter
派生的类只有将其放置在models目录中,才会进行插入/更新/删除操作。那么,有没有办法告诉适配器模型在哪里(应该干预哪些插入/更新/删除操作)? 最佳答案
如果需要,可以将类放在模块项目(http://www.playframework.com/documentation/2.1.x/SBTSubProjects)中
我在我的项目中做到了这一点。我有一个主要项目,有两个模块:
-通用模块(我的BeanPersistAdapter所在的模块)
-模型模块(我的所有模型类都在其中),这取决于公共模块
主要项目取决于模型模块。
这样做,您将拥有所需的相同内容,但是在模块中,而不在主项目的app文件夹中。