5

我想使用这个简化的模式将现有数据库与Persistent一起使用:

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Entity sql=entities
  deriving Show

EntityLink sql=entity_links
  sourceId EntityId
  targetId EntityId
  deriving Show
|]

entities表有一id列,这很好。但是,该entity_links表没有一个,我不想添加一个。相反,它具有主键(source_id, target_id)。每当我想插入一个EntityLink时,我都会收到此运行时错误:

SqlError {sqlState = "42703", sqlExecStatus = FatalError, sqlErrorMsg = "column \"id\" does not exist", sqlErrorDetail = "", sqlErrorHint = ""}

这是我EntityLink在代码中插入 an 的方法,给定有效的sourceIdand targetId

      insert $ EntityLink { entityLinkSourceId = sourceId
                          , entityLinkTargetId = targetId
                          }

如何id为类型禁用 Persistent 中的列EntityLink

4

1 回答 1

9

您可以使用Primary和指定属于主键的列。喜欢:

EntityLink sql=entity_links
  sourceId EntityId
  targetId EntityId
  Primary sourceId targetId
  deriving Show
于 2017-08-24T10:50:31.090 回答