簡體   English   中英

Spring Hibernate的getCurrentSession()刪除不起作用

[英]Spring Hibernate getCurrentSession() delete not working

我正在單元測試中對一個實體進行全面測試,到目前為止,幾乎所有工作都可以進行:創建,更新,列出。 但是,當我嘗試刪除記錄時,它並沒有被刪除。 這是我正在使用的代碼:

  public void delete (Integer id) {
    // This doesnt work even though I know user is set and id is not null
    User user = find(id);
    getSession().delete(user);
    // This will work
    // Query query = getSession().createSQLQuery("DELETE FROM users WHERE id = " + id);
    // query.executeUpdate();
  }    

    private Session getSession() {
      if (session == null) {        
        try {
            session = SessionFactoryUtils.getSession(sessionFactory, Boolean.TRUE);
          TransactionSynchronizationManager.bindResource(session.getSessionFactory(), new SessionHolder(session));            
        } catch (Exception e) {
            session = SessionFactoryUtils.getSession(sessionFactory, Boolean.FALSE);          
        }
      }
      return session;
    }

如果我直接執行查詢,則可以使用,但使用delete()方法無效。 我認為這可能與提交交易有關,但是我已經嘗試過類似的操作,但是沒有運氣。 有任何想法嗎?

我發現了這個問題。

首先,find()方法正在驅逐我的用戶模型,並可能將其退出會話。

在delete()之后,我還需要session.flush()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM