Versioning of persistent objects is a complex probem. People, mostly in the finance industry, are looking for solutions to this since years (see this post for instance). It seems there are now some solutions emerging, like Envers from RedHat/JBoss.
It is not clear from their web site if Envers supports JPA or only Hibernate, it seems to me it is limited to Hibernate.
LiDO, the old mapping technology of Xcalia, used to support this powerful feature in its version 2 (2003). This is something we have deprecated when we decided to open our data access engine, in order to support any kind of data sources, not only RDBMS.
Now that ORM is well established, and the basci problem is almost solved, it is the time to add features with business added-value like versioning.