diff --git a/persistable-record.cabal b/persistable-record.cabal
--- a/persistable-record.cabal
+++ b/persistable-record.cabal
@@ -1,5 +1,5 @@
 name:                persistable-record
-version:             0.4.1.0
+version:             0.4.1.1
 synopsis:            Binding between SQL database values and haskell records.
 description:         This package contiains types to represent table constraints and
                      interfaces to bind between SQL database values and Haskell records.
@@ -8,11 +8,11 @@
 license-file:        LICENSE
 author:              Kei Hibino
 maintainer:          ex8k.hibino@gmail.com
-copyright:           Copyright (c) 2013-2016 Kei Hibino
+copyright:           Copyright (c) 2013-2017 Kei Hibino
 category:            Database
 build-type:          Simple
 cabal-version:       >=1.10
-tested-with:           GHC == 8.0.1
+tested-with:           GHC == 8.0.1, GHC == 8.0.2
                      , GHC == 7.10.1, GHC == 7.10.2, GHC == 7.10.3
                      , GHC == 7.8.1, GHC == 7.8.2, GHC == 7.8.3, GHC == 7.8.4
                      , GHC == 7.6.1, GHC == 7.6.2, GHC == 7.6.3
@@ -38,9 +38,18 @@
                         , names-th
   hs-source-dirs:       src
   ghc-options:          -Wall
-
   default-language:     Haskell2010
 
+test-suite nested
+  build-depends:          base <5
+                        , quickcheck-simple
+                        , persistable-record
+
+  type:                 exitcode-stdio-1.0
+  main-is:              nestedEq.hs
+  hs-source-dirs:       test
+  ghc-options:          -Wall
+  default-language:     Haskell2010
 
 source-repository head
   type:       git
diff --git a/test/nestedEq.hs b/test/nestedEq.hs
new file mode 100644
--- /dev/null
+++ b/test/nestedEq.hs
@@ -0,0 +1,67 @@
+{-# OPTIONS -fno-warn-orphans #-}
+{-# LANGUAGE MultiParamTypeClasses, FlexibleInstances #-}
+
+import Control.Applicative ((<$>), (<*>))
+import Test.QuickCheck.Simple (defaultMain, eqTest)
+
+import Database.Record
+  (PersistableType (..),
+   FromSql (..), valueRecordFromSql, toRecord,
+   ToSql (..), valueRecordToSql)
+import Database.Record.Persistable (unsafePersistableSqlTypeFromNull)
+
+
+instance PersistableType String where
+  persistableType = unsafePersistableSqlTypeFromNull "<null>"
+
+
+instance FromSql String String where
+  recordFromSql = valueRecordFromSql id
+
+instance FromSql String Int where
+  recordFromSql = valueRecordFromSql read
+
+instance ToSql String String where
+  recordToSql = valueRecordToSql id
+
+instance ToSql String Int where
+  recordToSql = valueRecordToSql show
+
+
+data User =
+  User
+  { uid    ::  Int
+  , uname  ::  String
+  , note   ::  String
+  } deriving (Eq, Show)
+
+data Group =
+  Group
+  { gid    ::  Int
+  , gname  ::  String
+  } deriving (Eq, Show)
+
+data Membership =
+  Membership
+  { user   ::  User
+  , group  ::  Group
+  } deriving (Eq, Show)
+
+instance FromSql String User where
+  recordFromSql = User <$> recordFromSql <*> recordFromSql <*> recordFromSql
+
+instance FromSql String Group where
+  recordFromSql = Group <$> recordFromSql <*> recordFromSql
+
+instance FromSql String Membership where
+  recordFromSql = Membership <$> recordFromSql <*> recordFromSql
+
+main :: IO ()
+main =
+  defaultMain
+  [ eqTest
+    "nestedEq"
+    (Membership { user  = User { uid = 1, uname = "Kei Hibino", note = "HRR developer" }
+                , group = Group { gid = 1, gname = "Haskellers" }
+                } )
+    (toRecord ["1", "Kei Hibino", "HRR developer", "1", "Haskellers"]) ]
