自定义主键的持久`toSqlKey`
Posted
技术标签:
【中文标题】自定义主键的持久`toSqlKey`【英文标题】:Persistent `toSqlKey` for custom primary key 【发布时间】:2017-10-24 02:13:46 【问题描述】:我正在定义以下模型,其中Category
具有Text
类型的非整数主键code
。
Category
code Text
Primary code
deriving Show Typeable
CategoryTreeNode
name Text
code CategoryId Maybe
lft Int MigrationOnly default=0
rgt Int MigrationOnly default=0
deriving Show Typeable
对于没有Primary
定义的模型,我可以使用toSqlKey
将任意Int64
s 转换为Key Category
。具有自定义主键的模型是否有等效功能?
【问题讨论】:
【参考方案1】:我通过查看persistent的TH模块找到了答案:
https://github.com/yesodweb/persistent/blob/9396c278fc181fdac4a97c53637700417f41a478/persistent-template/Database/Persist/TH.hs#L857-L858
这一行表明CategoryKey
是通过 TH 生成的,确实如此:
let x :: Key Category
x = CategoryKey "foobar"
【讨论】:
以上是关于自定义主键的持久`toSqlKey`的主要内容,如果未能解决你的问题,请参考以下文章