Это потрясающе:
string.Format("{0:00}:{1:00}:{2:00}",
(int)myTimeSpan.TotalHours,
myTimeSpan.Minutes,
myTimeSpan.Seconds);
Он не должен ничего сохранять до того, как вы позвоните em.commit()
или транзакция завершится. Лучшее объяснение, которое я нашел, можно найти в здесь . Ниже приведен важный отрывок:
Эта операция приведет к выполнению операторов DML (вставка / обновление / удаление и т. Д.) В базе данных, но текущая транзакция не будет совершена. Это означает, что flush () не сделает текущие изменения видимыми для других экземпляров EntityManager или других внешних клиентов базы данных; это произойдет только при фиксации транзакции. Другими словами, операция flush () будет очищать только текущий кэш памяти из EntityManager в сеанс базы данных.
blockquote>Таким образом, сброс может вызвать некоторые исключения JPA, но на самом деле он не будет зафиксирован в базе данных до завершения транзакции.