将同一张表映射到两个不同的列表

Posted

技术标签:

【中文标题】将同一张表映射到两个不同的列表【英文标题】:Map same table to two different lists 【发布时间】:2014-12-02 01:20:41 【问题描述】:

是否可以有 1 个表映射到两个不同的列表?

例如,一个列表可能包含所有有效订单,而另一个列表可能包含所有提交的订单。

在数据库中,订单位于 1 个不同状态的表中。

我假设您可以在包集合上使用 where 子句?但是在持久化数据时我会有什么问题吗?

【问题讨论】:

我猜这不是映射问题,而是您通过查询获取订单的一种方式。 【参考方案1】:

我认为您不应该在映射级别处理此问题。在服务中查询过滤后的数据,或者向您的实体添加方法,例如 getActiveOrders()getSubmittedOrders(),它们只会过滤所有订单的(映射)列表。

顺便说一句,我认为集合映射的 where 子句会起作用。

【讨论】:

您的解决方案是我必须开始的,但我担心性能,因为现在需要检索所有订单才能在聚合根中执行过滤器。这让我觉得也许我的聚合太大了! 您尝试过@Where 收藏吗? Where 非常适合阅读,但我想我关心的是检索整个列表以添加新订单。 我认为唯一棘手的事情是当您更改状态以便订单从一个集合转到另一个集合时。如果这行得通,那么其他一切可能也行得通。用测试覆盖这些场景应该不会有太多的工作。

以上是关于将同一张表映射到两个不同的列表的主要内容,如果未能解决你的问题,请参考以下文章

《算法图解》chap5 散列表

如何 NHibernate 将多个类映射到同一个表

从两个不同的来源加入同一张表

SQL select同一张表,两个不同的顺序

Java 8 Streams:根据不同的属性多次映射同一个对象

如何通过在同一位置映射两个变量来重用物理内存?