<div dir="ltr"><div dir="ltr"><div>I'm not familiar with persistent, but I might have some ideas.</div>You are using template haskell. So while you are not directly using json, you are using it indirectly, via the code generated by mkPersist [1].<br>Presumably mkPersist must create an PersistEntity Account instance. Looking at the superclass constraints of PersistEntity [2] we see ToJSON (Key record) and FromJSON (Key record) where the record type variable is you Account type.<br>You can easily create instances of FromJSON and ToJSON by using Generics [3]. But this only works if you type is an instance of the Generic type class. I think that the code generated by mkPersist depends on the Key Account type having an instance for Generic. Notice that Key is a data family (type level function) and thus Key Account equals some other type.</div><div dir="ltr"><br></div><div>I can really recommend the -ddump-splices GHC option [4] when debugging code involving template haskell. It is a lot easier to understand a problem when you can just read the generated Haskell code.<br></div><div dir="ltr"><br><div><font face="monospace"><font face="arial,sans-serif"></font></font>1 - <a href="https://hackage.haskell.org/package/persistent-template-2.8.0.1/docs/Database-Persist-TH.html#v:mkPersist">https://hackage.haskell.org/package/persistent-template-2.8.0.1/docs/Database-Persist-TH.html#v:mkPersist</a> </div></div><div>2 - <a href="https://hackage.haskell.org/package/persistent-2.10.4/docs/Database-Persist-Class.html#t:Persistently">https://hackage.haskell.org/package/persistent-2.10.4/docs/Database-Persist-Class.html#t:Persistently</a></div><div>3 - <a href="https://hackage.haskell.org/package/aeson-1.4.6.0/docs/Data-Aeson.html#v:parseJSON">https://hackage.haskell.org/package/aeson-1.4.6.0/docs/Data-Aeson.html#v:parseJSON</a></div><div>4 - <a href="https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/debugging.html#ghc-flag--ddump-splices">https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/debugging.html#ghc-flag--ddump-splices</a></div><div><br></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Op vr 17 jan. 2020 om 18:29 schreef Debasish Ghosh <<a href="mailto:ghosh.debasish@gmail.com">ghosh.debasish@gmail.com</a>>:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi -<div><br></div><div>I have an entity declaration in persistent as follows:</div><div><br></div><div>share [mkPersist sqlSettings { mpsGenerateLenses = True, mpsPrefixFields = False }, mkMigrate "migrateAll"] [persistLowerCase|<br>    Account <br>        accountNo           Text<br>        accountType         AccountType  <br>        accountHolderName   Text  <br>        accountOpenDate     UTCTime default=CURRENT_TIME<br>        accountCloseDate    UTCTime Maybe default=NULL<br>        currentBalance      MoneyUSD<br>        rateOfInterest      Double <br>        Primary             accountNo<br>        deriving Show <br>|]</div><div><br></div><div>I am getting this compilation error ..</div><div><br></div><div>• No instance for (Generic (Key Account))<br>        arising from the 'deriving' clause of a data type declaration<br>      Possible fix:<br>        use a standalone 'deriving instance' declaration,<br>          so you can specify the instance context yourself<br>    • When deriving the instance for (aeson-1.4.6.0:Data.Aeson.Types.ToJSON.ToJSON<br>                                        (Key Account))<br>   |<br>40 | share [mkPersist sqlSettings { mpsGenerateLenses = True, mpsPrefixFields = False }, mkMigrate "migrateAll"] [persistLowerCase|<br>   | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...<br><div><br></div><div>and another exactly similar for FromJSON</div><div><br></div><div>What exactly is going wrong here ? I am not using json in the above definition.</div><div><br></div><div>regards.</div>-- <br><div dir="ltr"><div dir="ltr"><div>Debasish Ghosh</div></div></div></div></div></blockquote></div></div>