2010-08-11 75 views
34

当使用SetProjection()时,根据数据库理论和NHibernate,什么是Projection?什么是投影?

+0

可能重复[什么是投影在NHibernate?](http://stackoverflow.com/questions/4746995/what-is-a-projection-in-nhibernate) – philipxy 2015-07-15 08:29:29

回答

29

很简单,这是一个函数,它接受一个输入(例如,数据库的行),并且产生(基于多列例如从行中的一列,或者一些计算)的输出。

+0

在Hibernate中,产生的函数在哪里输出(例如列)被执行?它是在SQL数据库服务器上发生还是在返回完整行结果后在应用程序/ hibernate服务器上发生?谢谢。 – KyleM 2012-10-30 20:23:01

+0

@KyleM:因为我已经使用NHibernate来说明了这一点太长了,但我希望它可以作为SQL的一部分来执行。 – 2012-10-30 22:11:22

+0

谢谢..这也是我的想法。我只记得另一种检查方式(我们通常不使用hibernate查询日志记录),所以我将检查并报告回来。 – KyleM 2012-10-31 00:20:14

29

投影是关系代数的基本业务之一。它将关系的属性列表(可能为空)作为输入。它输出的关系只包含指定的属性列表,删除重复的元组。换句话说,输出也必须是一种关系。例如,如果关系R {A,B}包含三个元组{1,10},{2,10},{3,20},则R在属性列表{B}上的投影将包含2元组:{10},{20}。

总之,投影是或多或少相当于在SQL中SELECT DISTINCT(用null不含箱子和重复列)。

2

在休眠方面,它就像指定要选择哪些列。而不是让映射决定哪些列被提取。这意味着您可以通过ProjectionList指定sql函数,子查询,单列或上述所有内容。例如,如果您想对表SetProjection(Projections.RowCount())中的行进行计数。

7

投影表示查询中列的子集。

select x, y, z from YourTable 

x,y,z是这里的投影。

+5

难道这“栏目的一个子集”,而不是“列数” ? – CoDEmanX 2016-03-31 21:26:07

2

如果你熟悉SQL或数据库表: 投影指的字段/列/属性返回的数量。 选择处理要返回的行数/记录数。 有良好的视频的解释herehere

+0

尽管这些链接可能回答这个问题,但最好在这里包含答案的基本部分,并提供供参考的链接。如果链接页面更改,则仅链接答案可能会失效。 – Cleb 2015-07-04 20:02:18

-1

also call projection

它也叫投影,请查看图

投影反应系统中的事件

项目是简单听众

+0

不,投影不是一个监听器,它是一个映射。好的照片,错误的解释。 – 2018-01-04 21:33:21