diff --git a/Database/Persist/TH.hs b/Database/Persist/TH.hs
--- a/Database/Persist/TH.hs
+++ b/Database/Persist/TH.hs
@@ -18,6 +18,7 @@
 
 import Database.Persist.Base
 import Database.Persist.GenericSql (Migration, SqlPersist, migrate)
+import Database.Persist.GenericSql.Internal (unRawName,rawFieldName,rawTableIdName) -- XXX
 import Database.Persist.Quasi (parse)
 import Database.Persist.Util (nullable)
 import Database.Persist.TH.Library (apE)
@@ -232,7 +233,10 @@
     fpv <- mkFromPersistValues t
     utv <- mkUniqueToValues $ entityUniques t
     puk <- mkUniqueKeys t
-    fields <- mapM (mkField t) $ ColumnDef "id" (entityName t ++ "Id") [] : entityColumns t
+    let colnames = map (unRawName . rawFieldName) $ entityColumns t
+        idname = unRawName $ rawTableIdName t
+        idname_ = (if idname `elem` colnames then (++"_") else id) idname
+    fields <- mapM (mkField t) $ ColumnDef idname_ (entityName t ++ "Id") [] : entityColumns t
     return $
       [ dataTypeDec t
       , TySynD (mkName $ entityName t) [] $
diff --git a/persistent-template.cabal b/persistent-template.cabal
--- a/persistent-template.cabal
+++ b/persistent-template.cabal
@@ -1,5 +1,5 @@
 name:            persistent-template
-version:         0.6.1
+version:         0.6.2
 license:         BSD3
 license-file:    LICENSE
 author:          Michael Snoyman <michael@snoyman.com>
