我有一个项目,我正在使用NHibernate来处理数据库的绑定。到目前为止,我主要在查询时使用了基础知识。现在我正在努力解决一个更困难的问题,我注意到NHibernate的新部分。特别是我对SetProjection
感到好奇,这在查询时似乎很重要。
什么是投影,我通常如何使用它?我假设投影是数据库的一般术语,所以欢迎您提供更一般的答案..
答案 0 :(得分:28)
Antoine所说的预测是转型。在查询方面,它是:
SELECT *PROJECTION* FROM Table
*PROJECTION*
是数据转换的表达式。
示例:
SELECT * FROM ORDER
Criteria等价物将是:
List orders = session.createCriteria(Order.class).list();
此处没有投影,我们在没有转换的情况下获取数据。如果我们想要一个:
SELECT NAME FROM PRODUCT
在这里,Projection类开始发挥作用。上述查询可以重写为Criteria查询:
List products=session.createCriteria(Product.class)
.setProjection(Projection.property(\"name\"))
.list();
因此,我们将所有行投影到单个项目:name
字段。
还有其他预测:Projection.rowCount()
例如(COUNT(*)
)
答案 1 :(得分:6)
我不知道NHibernate,但一般来说,投影是将一个集合转换为另一个集合。在SQL中,它表示为SELECT。