spring data jpa 清除一级缓存
手动清除缓存
- 注入 javax.persistence.EntityManager
- 获取 org.hibernate.Session
- 调用clear();
@Autowired private EntityManager entityManager; void method(){ // clear session cache.next query from db entityManager.unwrap(Session.class).clear(); // Session session = (Session) entityManager.getDelegate(); // session.clear(); // entityManager.clear(); // doSomething() }
手动提交事务
@Autowired private EntityManager entityManager; @Autowired private PlatformTransactionManager transactionManager; @Autowired private TransactionDefinition transactionDefinition; public User save(User user) { TransactionStatus transactionStatus = transactionManager.getTransaction(transactionDefinition); User save = null; try { save = userDao.save(user); transactionManager.commit(transactionStatus); } catch (Exception e) { transactionManager.rollback(transactionStatus); throw e; } // entityManager.unwrap(Session.class).clear(); // clear session cache.next query from db // Session session = (Session) entityManager.getDelegate(); // session.clear(); save = findById(save.getId()); System.out.println("getUpdateDt2: "+save.getUpdateDt()); return save; }
上一篇:
IDEA上Java项目控制台中文乱码