在 esqueleto 中加入视图

Posted

技术标签:

【中文标题】在 esqueleto 中加入视图【英文标题】:Joining on a view in esqueleto 【发布时间】:2014-08-12 23:51:12 【问题描述】:

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

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

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

【问题讨论】:

【参考方案1】:

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

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

同时将相应表的键类型添加到视图架构中的第二个选定 id:

XView sql=xView ... xId XId

【讨论】:

以上是关于在 esqueleto 中加入视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在mysql中加入2个视图? [复制]

为啥在 pyspark 中加入两个临时视图后删除列不起作用,但它适用于数据框连接?

如何在 mvc 3.0 EF 5 中加入两个模型并在视图中显示它们

如果第一个没有可用记录,则从视图中选择并从一个表或另一个表中加入

无法并行创建物化视图

在 VIEW 中加入具有各种后缀的历史表