Domain数据能进行版本控制吗?
李小翔
2014-05-26 15:54

内容列表
启用Envers插件 	 # 
Domain事件 	 # 

BroFWK 已经集成（默认禁用）了 Hibernate Envers 插件，以实现数据及其附件的版本管理，详细的使用说明与示例请参考 bropen.framework.plugins.envers.EnversRevisionEntity 的 API 文档 。
启用数据版本管理后，数据库中每个领域类会自动生成一张后缀为 “_aud” 的表，以存储各个版本的数据，同时 EnversRevisionEntity 中还会保存每个版本的创建人和时间。可以通过二次开发实现版本回滚、比较与展示等功能。

启用Envers插件
默认情况下，Envers插件是被禁用了，需要在工程的 Config.groovy 中配置：
grails.plugin.envers = true

Domain事件
此外，可以在Domain中编写事件方法 onEnversInsert、onEnversUpdate、onEnversDelete 中，如果返回 Boolean.FALSE，则不会记录新版本。
注：如果 hasMany 明细数据，某种条件下不希望创建版本，则主类和明细类的 onEnversInsert 必须都返回 false，否则还是会记录版本变化。