При выполнении последовательности JPA устанавливает идентификатор точно после вызова метода persist вашего экземпляра EntityManager. Нет необходимости совершать флеш. Идентификатор доступен именно после этого вызова.
Это основное отличие между GenerationType.SEQUENCE и .IDENTITY. Более поздний из них предлагает идентификатор после контакта с db, в то время как SEQUENCE устанавливает его напрямую, потому что группа идентификаторов предварительно загружена в приложении во время выполнения, поэтому нет необходимости взаимодействовать с db для получения идентификатора.
Объяснение протокола JPA по другому осуществлению:.
«В отличии от AUTO и IDENTITY, стратегия ПОСЛЕДОВАТЕЛЬНОСТИ генерирует автоматическое значение, как только новый объект объекта сохраняется (т.е. до фиксации) Это может быть полезно, когда первичным ключевое значение требуется раньше. Чтобы свести к минимуму круглые поездки на сервер базы данных, идентификаторы выделяются группами. Количество идентификаторов в каждом распределении определяется атрибутом allocSize. Возможно, некоторые идентификаторы в заданном распределении не будут поэтому эта стратегия не гарантирует, что в значениях последовательности не будет пробелов ». http://www.objectdb.com/java/jpa/entity/generated
Возможный дубликат [Когда JPA установлен @GeneratedValue @Id] (http://stackoverflow.com/questions/9087848/when-does-the-jpa-set-a-generatedvalue-id) – awb