В общем случае обновление не должно производиться, если значения свойств совпадают. (В частности, сравнивайте равные в соответствии с их реализацией типа --- которая обычно совпадает с их методом equals (Object)).
Немо был прав, вы всегда должны знать, что выполняет SQL Hibernate. Хотя я рекомендую установить для регистратора org.hibernate.SQL (net.sf.hibernate.SQL для Hibernate 2) уровень DEBUG (в log4j) вместо использования свойства show_sql (которое всегда записывает в System.out или System.err iirc).
(хотя я думаю, что вы имели в виду session.flush()
, а не session.update(thing)
... если вы не используете сеанс без сохранения состояния?)