Hi! I am not sure, if it is really required to separate the entities and the view model. We use hibernate too, but directly use the entities in the view. This means, if one changes some data, we use the transparent mechanismn of the persistence framework to have them persisted.
For sure, this requires you to - or say, it'll make things much easier - use a application transaction or conversation. For this there is e.g. JBoss Seam, or, if you would like to use a lightweigt approach, the conversation tag in tomahawk sandbox. So in the end there is no need to duplicate your entities and you can make full use of your persistence framework including the versioning stuff. The conversation tag is a very young guy, but I'll help you out in adapting it for your application - and fix remaining bugs for sure ;-) - if you decide to use this stuff. Ciao, Mario

