有没有办法关闭所有实体在Glassfish中运行的Liferay 6中Spring的自动提交?
我需要这个来保存旧模型的副本以用于审计目的。我在JDBC url中尝试了autocommit = false,并在portal-ext.properties中设置了hibernate.connection.autocommit = false
public <T extends BaseModel<T>> T auditUpdate(final T model, final BasePersistence<T> persistence)
T oldModel = null;
try {
oldModel = persistence.findByPrimaryKey(model.getPrimaryKeyObj());
} catch (final NoSuchModelException ignored) {
// This is an insert
}
此外oldModel == model
返回true
答案 0 :(得分:0)
我不确定实际预期的结果,但请记住,Liferay会进行相当多的缓存 - 因此您可能会认为您正在访问数据库,但实际上您只是接受了来自缓存。因此,还有更多级别,我不确定你是否正在攻击正确的级别。
Liferay(EE)有一个您可能想要使用的Audit插件,您也可以拥有ModelListeners或使用审计功能覆盖服务实现。你应该使用什么取决于你想要做多少审计。
请记住,过多的审核很容易给门户带来巨大的性能负担 - 因此您应该仔细选择(并限制)审核的功能。如果您采用通用的“全部审计”方法,每次鼠标点击很容易生成兆字节的审计输出。