Versioning is a simple solution to the locking problem in a distributed/disconnected system - it has some drawbacks in highly concurrent application, but overall I have found it to be simple and powerful. In essence a column is added to the table with a sequential number i.e 1, when the object is read it includes this number, each save will then include the version "update X set version = version +1 where version = valuereadinobject", if update count is zero throw a concurrent modification exception.
It could be be an optional field at object level as it only makes sense for use where you need locking i.e updating account balances. I would love to see support for a version column type in ebeans. This is really the last required component for adoption of an otherwise brilliant framework.
I actually use Hibernate in the ebeans model currently, i.e work with pojos then have an entity manager with an 'update' method that does a: load, set properties of hibernate object to pojo values, and then commit.