加入esqueleto的视图

时间:2014-08-12 23:51:13

标签: haskell persistent esqueleto

我有一个与表X具有0:1对应关系的sql视图。我想将这个视图加到另一个表Y上,该表引用了X(类型XId)。 我已经指定了视图,因为我会持久化其他任何表。 V的id列是对X的引用,但是将该视图声明为持久的表自然赋予它类型VId 而不是XId。所以我无法将视图加入到Y中,因为这些类型不匹配。

我意识到我可以用rawSQL做到这一点,但是我的查询也有一个IN子句,它似乎不能很好地与值列表一起使用(使用rawSQL)。 另一种选择是在视图中选择两次XId列,并在模型定义中将额外的一列指定为类型XId。 最后,我可以回退插入视图查询内联或完全使用原始sql执行查询,跳过持久性插值。

有没有办法在不诉诸上述方法的情况下做到这一点? 如果可能的话,我更愿意使用esqueleto。

1 个答案:

答案 0 :(得分:1)

我还没有找到适当的解决方案。
目前我在视图中两次选择每个主键,例如

... SELECT id, id AS xId...

将相应表的键类型添加到视图模式中的第二个选定ID:

XView sql=xView ... xId XId