Masalahnya sudah terpecahkan..
dapat inspirasi dari blog ini :
http://javaprogrammingtips4u.blogspot.com/2010/04/how-to-solve-orghibernatehibernateexcep.html
intinya :
<tx:annotation-driven/> only looks for @Transactional on beans in the same
application context it is defined in. This means that, if you put
<tx:annotation-driven/> in a WebApplicationContext for a DispatcherServlet,
it only checks for @Transactional beans in your controllers, and not your
services.
Nah, coba lihat di applicationContext.xml dan springapp-servlet.xml
di applicationContext.xml
<context:annotation-config/>
<context:component-scan base-package="*"/>
<tx:annotation-driven/>
di springapp-servlet.xml
<context:annotation-config/>
<context:component-scan base-package="*"/>
Sebenarnya aneh juga karena lihat dari penjelasannya, jika annotation-driven
ditaruh di dispatcher servlet, maka akan cek annotation transactional bean
di dalam kontroller , tidak diservice. Tapi kan itu saya taruh di
applicationContext.xml mestinya dia cek di service. tapi mungkin ambigu kali
kalau pakai *
solusinya bisa tambahkan <tx:annotation-driven/> di spring-servlet.xml atau
jangan pakai *
saya sih lebih prefer jangan pakai *, jadi di springapp-servlet di base
package ke controller aja, jadi <tx:annotation-driven/> cuma hanya di
applicationContext.xml
Oh ya..thanks buat semua rekan-rekan disini untuk bantuannya.