【发布时间】:2015-01-31 05:26:26
【问题描述】:
在服务层,我们得到了
@Service
@Transactional(readOnly = false)
public abstract class GenericService
在存储层,我们得到了
public abstract class GenericRepository
在服务中我们有一个save方法调用repository的save方法,就是
@Override
public void savePersist(T entity) {
getSession().persist(entity);
}
我要做的就是将对象“实体”保存到休眠会话中以供进一步处理,而不需要提交或任何插入语句到数据库中。 但实际发生的是在运行 savePersist() 后保存“实体”。我认为这是因为在服务类上使用了 @Transactional 注释。但是我应该怎么做才能在会话中保存实体?
【问题讨论】:
-
这是所有情况的理想行为还是仅适用于特定情况?在任何情况下,
savePersist(T entity)方法被指定用于保存和提交更改,因此如果您在特定情况下想要除此之外的行为,最好寻找其他解决方案。例如你可以有一些代理服务readOnly=true,它会调用GenericRepository.savePersist(T entity),结果spring会携带代理并且不会创建一个新的事务,所以实体不会被提交。