diff --git a/esqueleto.cabal b/esqueleto.cabal
--- a/esqueleto.cabal
+++ b/esqueleto.cabal
@@ -1,5 +1,5 @@
 name:                esqueleto
-version:             2.2.4
+version:             2.2.5
 synopsis:            Type-safe EDSL for SQL queries on persistent backends.
 homepage:            https://github.com/prowdsponsor/esqueleto
 license:             BSD3
@@ -64,7 +64,7 @@
   build-depends:
       base                 >= 4.5     && < 4.9
     , text                 >= 0.11    && < 1.3
-    , persistent           >= 2.1.1.7 && < 2.2
+    , persistent           >= 2.1.1.7 && < 2.3
     , transformers         >= 0.2
     , unordered-containers >= 0.2
     , tagged               >= 0.2
diff --git a/src/Database/Esqueleto/Internal/Language.hs b/src/Database/Esqueleto/Internal/Language.hs
--- a/src/Database/Esqueleto/Internal/Language.hs
+++ b/src/Database/Esqueleto/Internal/Language.hs
@@ -166,6 +166,9 @@
   groupBy :: (ToSomeValues expr a) => a -> query ()
 
   -- | @ORDER BY@ clause. See also 'asc' and 'desc'.
+  --
+  -- Multiple calls to 'orderBy' get concatenated on the final
+  -- query, including 'distinctOnOrderBy'.
   orderBy :: [expr OrderBy] -> query ()
 
   -- | Ascending order of this field or expression.
diff --git a/test/Test.hs b/test/Test.hs
--- a/test/Test.hs
+++ b/test/Test.hs
@@ -706,7 +706,7 @@
                  return p
           liftIO $ ret `shouldBe` [ p1e, p3e, p2e ]
 
-      it "works with two ASC fields" $
+      it "works with two ASC fields (one call)" $
         run $ do
           p1e <- insert' p1
           p2e <- insert' p2
@@ -724,7 +724,7 @@
           liftIO $ ret `shouldBe` [ p2e, p4e, p3e, p1e ]
 #endif
 
-      it "works with one ASC and one DESC field" $
+      it "works with one ASC and one DESC field (two calls)" $
         run $ do
           p1e <- insert' p1
           p2e <- insert' p2
@@ -732,7 +732,8 @@
           p4e <- insert' p4
           ret <- select $
                  from $ \p -> do
-                 orderBy [desc (p ^. PersonAge), asc (p ^. PersonName)]
+                 orderBy [desc (p ^. PersonAge)]
+                 orderBy [asc (p ^. PersonName)]
                  return p
 #ifdef WITH_POSTGRESQL
           liftIO $ ret `shouldBe` [ p2e, p1e, p4e, p3e ]
