Native queries are clearing the 2nd level cache entries. An answer from the hibernate forum that is 7 years old says that HQL update queries also clear the 2nd level cache.
We did see HQL update clearing the 2nd level cache when running with Hibernate 3.2.x
As a simple way to validate for your individual setup, implement something like:
http://narcanti.keyboardsamurais.de/hibernate-statistics-jsp-reloaded.html
Note details on that page before and after running the HQL update transaction ...
Or gather stats directly in your code and/or using JMX
http://docs.jboss.org/hibernate/core/3.5/reference/en/html/performance.html#performance-monitoring
As for improved behaviour, the Hibernate project might be open to implement a patch :)