I have identical problem with optimistic locking when manually change the version. These are the most relevant threads I found:
http://forum.hibernate.org/viewtopic.php?t=955121
http://forum.hibernate.org/viewtopic.php?t=949462
http://forum.hibernate.org/viewtopic.php?t=955893
http://forum.springframework.org/showthread.php?t=23736
I see two acceptable solutions:
1. Do evict() - does work but has performance cost and not elegant
2. Compare versions in the interceptor (see the first link above) - looks better than evict()
I think it will be great if Hibernate team will post some opinion about this (actual) problem (i didn't find such so far). Thanks in advance.