Um...you think the data is cached? Perhaps, in the Hibernate cache?
Hibernate caches the data in it's primary cache. If you update the underlying database, you need to call a refresh on Hibernate.
Everything is working as expected.
Check out the JavaDoc on the Hibernate3 refresh method of the Hibernate Session:
Quote:
refresh
public void refresh(Object object)
throws HibernateException
Re-read the state of the given instance from the underlying database. It is inadvisable to use this to implement long-running sessions that span many business tasks. This method is, however, useful in certain special circumstances. For example
* where a database trigger alters the object state upon insert or update
* after executing direct SQL (eg. a mass update) in the same session
* after inserting a Blob or Clob
Parameters:
object - a persistent or detached instance
Throws:
HibernateException
http://www.hibernate.org/hib_docs/v3/api/org/hibernate/Session.html#refresh(java.lang.Object)