Вы можете найти информацию в документации по API Java Hibernate Session:
/**
* Make a transient instance persistent. This operation cascades to associated
* instances if the association is mapped with {@code cascade="persist"}
* <p/>
* The semantics of this method are defined by JSR-220.
*
* @param object a transient instance to be made persistent
*/
void persist(Object object);
Так что этот метод работает, потому что вы определили @OnetoOne (cascade = CascadeType.Persist)
/**
* Persist the given transient instance, first assigning a generated identifier. (Or
* using the current value of the identifier property if the <tt>assigned</tt>
* generator is used.) This operation cascades to associated instances if the
* association is mapped with {@code cascade="save-update"}
*
* @param object a transient instance of a persistent class
*
* @return the generated identifier
*/
Serializable save(Object object);
Итак, чтобы это работало, вы должны добавить каскадное сохранение-обновление.
НО: save-update специфично для Hibernate, а не для JPA. Так что не стоит использовать save.
И лучше вообще не использовать Hibernate Session, а вместо этого использовать JPA EntityManager.