See this question.
It turns out that even without committing the transaction manually, before the TX is committed, the person has an ID after calling the save() meth
Play! is flushing the persistence context (which writes changes to the database and allows it to get the generated ID) every time you save an object using the save() method on the model:
From the JPABase._save() source code:
if (!em().contains(this)) {
    em().persist(this);
    PlayPlugin.postEvent("JPASupport.objectPersisted", this);
}
// ...
try {
    em().flush();
} catch (PersistenceException e) {
    // ...
}