diff --git a/java/com/google/gerrit/server/schema/AbstractDisabledAccess.java b/java/com/google/gerrit/server/schema/AbstractDisabledAccess.java
index 7ebc741..72cd706 100644
--- a/java/com/google/gerrit/server/schema/AbstractDisabledAccess.java
+++ b/java/com/google/gerrit/server/schema/AbstractDisabledAccess.java
@@ -37,12 +37,6 @@
     return Futures.immediateCheckedFuture(null);
   }
 
-  private final NoChangesReviewDb wrapper;
-
-  AbstractDisabledAccess(NoChangesReviewDb wrapper) {
-    this.wrapper = wrapper;
-  }
-
   @Override
   public final int getRelationID() {
     throw new UnsupportedOperationException(GONE);
diff --git a/java/com/google/gerrit/server/schema/NoChangesReviewDb.java b/java/com/google/gerrit/server/schema/NoChangesReviewDb.java
index 083ecd1..80a18b9 100644
--- a/java/com/google/gerrit/server/schema/NoChangesReviewDb.java
+++ b/java/com/google/gerrit/server/schema/NoChangesReviewDb.java
@@ -30,7 +30,6 @@
 import com.google.gerrit.reviewdb.server.SchemaVersionAccess;
 import com.google.gwtorm.server.Access;
 import com.google.gwtorm.server.ListResultSet;
-import com.google.gwtorm.server.OrmException;
 import com.google.gwtorm.server.ResultSet;
 import com.google.gwtorm.server.StatementExecutor;
 
@@ -53,11 +52,11 @@
   private final PatchLineCommentAccess patchComments;
 
   NoChangesReviewDb() {
-    changes = new Changes(this);
-    patchSetApprovals = new PatchSetApprovals(this);
-    changeMessages = new ChangeMessages(this);
-    patchSets = new PatchSets(this);
-    patchComments = new PatchLineComments(this);
+    changes = new Changes();
+    patchSetApprovals = new PatchSetApprovals();
+    changeMessages = new ChangeMessages();
+    patchSets = new PatchSets();
+    patchComments = new PatchLineComments();
   }
 
   @Override
@@ -121,10 +120,6 @@
 
   private static class Changes extends AbstractDisabledAccess<Change, Change.Id>
       implements ChangeAccess {
-    private Changes(NoChangesReviewDb wrapper) {
-      super(wrapper);
-    }
-
     @Override
     public ResultSet<Change> all() {
       return empty();
@@ -134,32 +129,24 @@
   private static class ChangeMessages
       extends AbstractDisabledAccess<ChangeMessage, ChangeMessage.Key>
       implements ChangeMessageAccess {
-    private ChangeMessages(NoChangesReviewDb wrapper) {
-      super(wrapper);
-    }
-
     @Override
-    public ResultSet<ChangeMessage> byChange(Change.Id id) throws OrmException {
+    public ResultSet<ChangeMessage> byChange(Change.Id id) {
       return empty();
     }
 
     @Override
-    public ResultSet<ChangeMessage> byPatchSet(PatchSet.Id id) throws OrmException {
+    public ResultSet<ChangeMessage> byPatchSet(PatchSet.Id id) {
       return empty();
     }
 
     @Override
-    public ResultSet<ChangeMessage> all() throws OrmException {
+    public ResultSet<ChangeMessage> all() {
       return empty();
     }
   }
 
   private static class PatchSets extends AbstractDisabledAccess<PatchSet, PatchSet.Id>
       implements PatchSetAccess {
-    private PatchSets(NoChangesReviewDb wrapper) {
-      super(wrapper);
-    }
-
     @Override
     public ResultSet<PatchSet> byChange(Change.Id id) {
       return empty();
@@ -174,10 +161,6 @@
   private static class PatchSetApprovals
       extends AbstractDisabledAccess<PatchSetApproval, PatchSetApproval.Key>
       implements PatchSetApprovalAccess {
-    private PatchSetApprovals(NoChangesReviewDb wrapper) {
-      super(wrapper);
-    }
-
     @Override
     public ResultSet<PatchSetApproval> byChange(Change.Id id) {
       return empty();
@@ -202,10 +185,6 @@
   private static class PatchLineComments
       extends AbstractDisabledAccess<PatchLineComment, PatchLineComment.Key>
       implements PatchLineCommentAccess {
-    private PatchLineComments(NoChangesReviewDb wrapper) {
-      super(wrapper);
-    }
-
     @Override
     public ResultSet<PatchLineComment> byChange(Change.Id id) {
       return empty();
