@Transactional标签用于标记ServiceImpl使用事务,并且能够打开一个sessionFactory的session,并且打开事务。
如果在这个标签为@Transactional(propagation = Propagation.NOT_SUPPORTED),就不打开session了,自然也不会打开事务,你要自己打开并且维护它,关闭session,在session范围内更改了对象的值,他也不会相应的更新到数据库中(前提是你没有打开事务)。
@Service @Transactional public class MMCommentServiceImpl implements MMCommentService { @Resource private SessionFactory sessionFactory; //设置只读 @Transactional(propagation = Propagation.NOT_SUPPORTED) @Override public List<MMComment> getCommentList(int id) { Session session = sessionFactory.openSession(); List<MMComment> list =session .createQuery("from MMComment where image.id = :id order by zan desc") .setMaxResults(8)//最多取几条,热门的 .setInteger("id", id) .list(); session.close(); return list; } }