我有一个项目,我正在使用NHibernate处理绑定到数据库。到目前为止,我一直在使用基本的查询。现在我正在努力处理更难的查询,并且注意到了NHibernate的新部分。特别是我很好奇SetProjection
,这在查询时似乎很重要。什么是NHibernate中的投影?
什么是投影,我将如何典型地使用它?我假设投影是数据库的一个总称,因此欢迎您提供更一般的答案。
我有一个项目,我正在使用NHibernate处理绑定到数据库。到目前为止,我一直在使用基本的查询。现在我正在努力处理更难的查询,并且注意到了NHibernate的新部分。特别是我很好奇SetProjection
,这在查询时似乎很重要。什么是NHibernate中的投影?
什么是投影,我将如何典型地使用它?我假设投影是数据库的一个总称,因此欢迎您提供更一般的答案。
安托万所说的预测是变革。在查询方面它是:
SELECT *PROJECTION* FROM Table
*PROJECTION*
是数据转换的表达式。
例子:
SELECT * FROM ORDER
的准则等效是:
List orders = session.createCriteria(Order.class).list();
这里没有投影,我们把数据无需转换。如果我们想要一个:
SELECT NAME FROM PRODUCT
在这里,投影类发挥作用。上面的查询可以改写成一个标准的查询为:
List products=session.createCriteria(Product.class)
.setProjection(Projection.property(\"name\"))
.list();
所以我们项目中的所有行到单个项目:name
场。
还有其他的预测:Projection.rowCount()
例如(用于COUNT(*)
)
会很高兴听到downvote – Andrey 2011-01-20 12:47:31
我不知道NHibernate,但总的来说,投影是一个转换一套到另一套。在SQL中,它表示为SELECT。
http://en.wikipedia.org/wiki/Projection_(relational_algebra) – 2011-01-20 13:27:02