From 3bb74d7e3b7cc20f3b63eeb6e9326a38fac98c39 Mon Sep 17 00:00:00 2001 From: Sam Berlin Date: Thu, 4 May 2023 11:25:10 -0700 Subject: [PATCH] Improve the error message if an EntityManager is provisioned before a unit if work is started, to help users transition to the new default that requires an explicit work open (or the legacy option set). PiperOrigin-RevId: 529465168 --- extensions/persist/src/com/google/inject/persist/BUILD | 1 - .../com/google/inject/persist/jpa/JpaPersistService.java | 9 ++++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/extensions/persist/src/com/google/inject/persist/BUILD b/extensions/persist/src/com/google/inject/persist/BUILD index b918644afd..366639c4af 100644 --- a/extensions/persist/src/com/google/inject/persist/BUILD +++ b/extensions/persist/src/com/google/inject/persist/BUILD @@ -21,7 +21,6 @@ java_library( tags = ["maven_coordinates=com.google.inject.extensions:guice-persist:" + POM_VERSION], deps = [ "//core/src/com/google/inject", - "//extensions/servlet/src/com/google/inject/servlet", "//third_party/java/aopalliance", "//third_party/java/guava/annotations", "//third_party/java/guava/base", diff --git a/extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java b/extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java index 72ac2d8354..7680e974e9 100644 --- a/extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java +++ b/extensions/persist/src/com/google/inject/persist/jpa/JpaPersistService.java @@ -63,9 +63,12 @@ public EntityManager get() { EntityManager em = entityManager.get(); Preconditions.checkState( null != em, - "Requested EntityManager outside work unit. " - + "Try calling UnitOfWork.begin() first, or use a PersistFilter if you " - + "are inside a servlet environment."); + "Requested EntityManager outside work unit. As of Guice 6.0, Guice Persist doesn't" + + " automatically begin the unit of work when provisioning an EntityManager. To" + + " preserve the legacy behavior, construct the `JpaPersistModule` with a" + + " `JpaPersistOptions.builder().setAutoBeginWorkOnEntityManagerCreation(true).build()`." + + " Alternately, try calling UnitOfWork.begin() first, or use a PersistFilter if you" + + " are inside a servlet environment."); return em; }