วันจันทร์ที่ 5 มีนาคม พ.ศ. 2555

ปัญหาการใช้ @Transactional แล้วได้ exception Error: No Hibernate Session bound to thread

เป็นปัญหาที่เราใช้ Spring กับ Hibernate แล้วดึง getCurrentSession มาใช้ แล้วจะขึ้น Exception ประมาณนี้

org.hibernate.HibernateException: No Session found for current thread

ซึ่งเกิดจากการที่เราไม่มี Transaction ไปครอบไว้ แก้โดย
1. เพิ่ม @Transactional
2. เพิ่ม <tx:annotation-driven />
3. เพิ่ม component scan ในส่วนที่ไว้ tx:annotation-driven ต้องเป็นส่วนใน applicatoncontext.xml ครับ
4. ถ้าเราใส่ component scan บน dispatch-servlet.xml แล้ว จะยังไม่ได้ ต้องทำการเพิ่มให้ส่วน dispatch-servlet.xml เอาเฉพาะ controller ส่วน business service, dao service ให้เอาไปวางไว้ที่ applicationtext.xml แทน ก็จะได้ครับ

Reference
http://www.sivalabs.in/2011/05/springmvc-hibernate-error-no-hibernate.html

วันอังคารที่ 28 กุมภาพันธ์ พ.ศ. 2555