spring聲明交易管理~之細節session.getCurrentSession()~~~~

來源:互聯網
上載者:User

在spring運用聲明事務時找錯(測試事務readOnly的異常拋出--異常類是runtimeexception),幾乎暈死了~還好最後找到了。汗@@@'''''''

 

找了一整天,幾乎要暈死~都怪自己沒基礎~~哎~總結,吸取教訓。。

問題:在一個有事務(聲明為唯讀)管理的方法中,特意進行增刪改,使其報異常錯誤~~

Service類如下(Service層,由spring注入dao save實體)

package com.itnetwork.ServiceImp; import javax.annotation.Resource; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import com.itnetwork.DaoImp.CategoryDaoImp; import com.itnetwork.DaoImp.NewsDaoImp; import com.itnetwork.Entity.Category; import com.itnetwork.Entity.News; @Component("testService") public class TestService { private NewsDaoImp newsDaoImp; public CategoryDaoImp getCategoryDaoImp() { return categoryDaoImp; } @Resource(name="categoryDaoImp") public void setCategoryDaoImp(CategoryDaoImp categoryDaoImp) { this.categoryDaoImp = categoryDaoImp; } private CategoryDaoImp categoryDaoImp; @Transactional(readOnly=true) public void add(News news) { newsDaoImp.saveNews(news); } @Transactional(readOnly=true) public void add(Category category) { categoryDaoImp.saveCategory(category); } public NewsDaoImp getNewsDaoImp() { return newsDaoImp; } @Resource(name="newsDaoImp") public void setNewsDaoImp(NewsDaoImp newsDaoImp) { this.newsDaoImp = newsDaoImp; } }

Dao類save方法如下(此為導致錯誤的代碼):

public void saveCategory(Category category) { //hibernateTemplate.save(category); Session session = sessionFactory.openSession();//.getCurrentSession(); session.save(category); }

原因分析:sessionFactory.openSession(),另外開闢了一個session,而不是使用當前session。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.