Database 什么是投影?
在使用SetProjection()时,根据数据库理论和NHibernate,什么是投影?非常简单,它是一个函数,它接受输入(例如数据库行)并生成输出(例如,行中的一列,或者基于多列的某些计算)投影是关系代数的基本运算之一。它将一个关系和该关系的属性列表(可能为空)作为输入。它输出一个关系,该关系仅包含删除了重复元组的指定属性列表。换句话说,输出也必须是一个关系 例如,如果关系R{A,B}包含三个元组{1,10},{2,10},{3,20},那么R在属性列表{B}上的投影将包含两个元组:{10},{20}Database 什么是投影?,database,nhibernate,relational-algebra,Database,Nhibernate,Relational Algebra,在使用SetProjection()时,根据数据库理论和NHibernate,什么是投影?非常简单,它是一个函数,它接受输入(例如数据库行)并生成输出(例如,行中的一列,或者基于多列的某些计算)投影是关系代数的基本运算之一。它将一个关系和该关系的属性列表(可能为空)作为输入。它输出一个关系,该关系仅包含删除了重复元组的指定属性列表。换句话说,输出也必须是一个关系 例如,如果关系R{A,B}包含三个元组{1,10},{2,10},{3,20},那么R在属性列表{B}上的投影将包含两个元组:{10}
简言之,投影或多或少相当于SQL中的SELECT DISTINCT(不包括具有NULL和重复列的情况)。对于hibernate,它就像指定要选择的列一样。而不是让映射决定要获取哪些列。这意味着您可以通过ProjectionList指定sql函数、子查询、单个列或以上所有内容。例如,如果要计算表中的行数,请使用SetProjection(Projections.RowCount())投影表示查询中的列子集
select x, y, z from YourTable
x、 y,z是此处的投影。如果您熟悉SQL或数据库表: 投影是指要返回的字段/列/属性的数量。 选择处理要返回的行数/记录数。 有很好的视频解释 和 这也叫投影,请查看图表 投影对系统中的事件作出反应
项目在Hibernate中是简单的监听器,生成输出(例如列)的函数在哪里执行?它是发生在SQL数据库服务器上,还是在返回整行结果后发生在应用程序/hibernate服务器上?谢谢。@KyleM:我已经很久没有用NHibernate来确定了,但我希望它能作为SQL的一部分执行。谢谢。。我也是这么想的。我刚刚想起另一种检查方法(hibernate查询日志,我们通常不使用…),所以我会检查并报告。@KyleM:计数投影肯定发生在SQL中,如果您查看发出的查询,它是select
count(columnName)
,而这些链接可能会回答这个问题,最好在这里包括答案的基本部分,并提供链接供参考。如果链接页面发生更改,仅链接的答案可能无效。可能的重复不是指“列的子集”而是“列的数量”?不,投影不是侦听器,而是映射。好的图片,错误的解释。