2011-01-20 8 views
24

Tengo un proyecto en el que estoy usando NHibernate para manejar enlaces a la base de datos. Hasta ahora, he estado utilizando básicamente lo básico cuando se trata de consultas. Ahora estoy luchando con una consulta más difícil y noto nuevas partes de NHibernate. En particular, tengo curiosidad acerca de SetProjection, que parece ser importante al hacer consultas.¿Qué es una proyección en NHibernate?

¿Qué es una proyección y cómo la usaré normalmente? Supongo que una proyección es un término general cuando se trata de bases de datos, por lo que puede dar más respuestas generales también.

+0

http://en.wikipedia.org/wiki/Projection_(relational_algebra) –

Respuesta

29

Proyección como dijo Antoine es la transformación. En cuanto a la consulta es:

SELECT *PROJECTION* FROM Table 

*PROJECTION* es expresión para la transformación de datos.

Ejemplo:

SELECT * FROM ORDER 

La Criterios equivalente sería:

List orders = session.createCriteria(Order.class).list(); 

Ninguna proyección aquí, tomamos los datos sin transformación. Si queremos uno:

SELECT NAME FROM PRODUCT 

Aquí entra en juego la clase de Proyección. La consulta anterior se puede reescribir en una consulta criterios como:

List products=session.createCriteria(Product.class) 
    .setProjection(Projection.property(\"name\")) 
    .list(); 

Así que proyectan todas las filas a solo elemento: name campo.

Hay otras proyecciones: Projection.rowCount() por ejemplo (para COUNT(*))

+0

estaría encantado de oír razón detrás downvote – Andrey

+0

Gracias! Aclarando Y sí, comencé buscando en Google, pero realmente no encontré la respuesta. Por cierto; el voto a favor no fue de mi parte. +1 – stiank81

+3

En cuanto a la primera fila de su respuesta, llegué aquí del primer resultado de google =) –

6

No sé de NHibernate, pero en general, una proyección es una transformación de un conjunto en otro conjunto. En SQL, se expresa como SELECCIONAR.

Cuestiones relacionadas