Что такое проекция в NHibernate? - PullRequest
25 голосов
/ 20 января 2011

У меня есть проект, в котором я использую NHibernate для обработки привязок к базе данных.До сих пор я в основном использовал основы, когда дело доходит до запросов.Сейчас я борюсь с более сложным запросом и замечаю новые части NHibernate.В частности, мне любопытно узнать SetProjection, что кажется важным при выполнении запросов.

Что такое проекция и как я ее обычно использую?Я предполагаю, что прогноз является общим термином, когда речь заходит о базах данных, поэтому вы можете также дать более общие ответы ..

Ответы [ 2 ]

28 голосов
/ 20 января 2011

Проекция, как сказал Антуан, - это трансформация. С точки зрения запроса это:

SELECT *PROJECTION* FROM Table

*PROJECTION* - выражение для преобразования данных.

Пример:

SELECT * FROM ORDER

Критериальный эквивалент будет:

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 field.

Существуют и другие прогнозы: Projection.rowCount() например (для COUNT(*))

6 голосов
/ 20 января 2011

Я не знаю о NHibernate, но в целом проекция - это преобразование набора в другой набор. В SQL это выражается как SELECT.

...