Hibernate StatelessSession with Transactional Annotation
I have a bi-directional collection mapping in Java which I thought was causing me problems when persisting using Hibernate’s StatelessSession API.
However, it looks as though the issue was being caused by the fact I was using the @Transactional annotation instead. The API states:
“Operations performed via a stateless session bypass Hibernate’s event model and interceptors.”
I didn’t pick up on the importance of the above statement as it’s not particularly clear at first glance, but it looks as though using Annotations via AOP just isn’t supported when streaming directly to the database using the StatelessSession.
Commenting out the annotation and using a programmatic Transaction instead corrected the problem:
// @Transactional
public List<Package> insertAvailability(final List<Package> packages) {
final StatelessSession session = sessionFactory.openStatelessSession();
final Transaction tx = session.beginTransaction();
session.insert(aPackage);
// insert collections manually etc...
tx.commit();
session.close();
return packages;
}
2 Comments to Hibernate StatelessSession with Transactional Annotation
Leave a comment
You must be logged in to post a comment.
Agile CTO
- tech_startup: Puppet certificate issues http://t.co/oM6y53rx 4 days ago
- have invented a new UNIX tool for cutting the grass: sudo chmown aeells:aeells squid.conf.bkp sudo: chmown: command not found 5 days ago
- I support #wikipediablackout Show your support here http://t.co/UFN8O0gk 2 weeks ago
- reasonable man adapts himself to world; unreasonable man tries to adapt world to himself; => all progress depends on unreasonable man. 3 weeks ago
- @blinkdesign we could do that too!!!!? ;o) in reply to blinkdesign 3 weeks ago
- @blinkdesign we could do something similar on our tech blog maybe... in reply to blinkdesign 3 weeks ago
- ".....in all things, the supreme excellence is simplicity." Henry Wadsworth Longfellow 3 weeks ago
- good day bootstrapping #tomcat #memcached to #aws server via #puppet - looking forward to provisioning entire production replica in minutes! 3 weeks ago
- great (practical) example of how to do #continousdeployment and branching within teams http://t.co/ceeyvD0h courtesy @chacon @domfarr 2012-01-05
- hi @ruv, mind if i ask how you came by that statistic? cheers! in reply to ruv 2012-01-02
- More updates...



hi,
thanks for the article. it was very useful.
I wanted to know what exactly you meant by comment “// insert collections manually”. I am using stateless session which ignores the collectionm map in my object while saving the object. What is the work around for it?
Kindly let me know.
Thanks
hi, sorry for not replying sooner.
i think all you have to do is call session.insert() for each item in your collection, assuming your foreign key dependency has been set up by the initial insert() statement.
this code has long since disappeared having refactored the above process, but if i remember correctly it should be fairly straightforward.
let me know if you have any further problems if you haven’t already solved this yourself.