2011-01-20 10 views
24

Ho un progetto in cui sto usando NHibernate per gestire i collegamenti al database. Finora ho usato principalmente le basi quando si tratta di domande. Ora sto lottando con una query più difficile e noto nuove parti di NHibernate. In particolare sono curioso di SetProjection, che sembra essere importante quando si fanno le query.Che cos'è una proiezione in NHibernate?

Che cos'è una proiezione e come la utilizzo in genere? Suppongo che una proiezione sia un termine generale quando si tratta di database, quindi siete invitati a dare anche risposte più generali.

+0

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

risposta

29

Proiezione come ha detto Antoine è la trasformazione. In termini di interrogazione è:

SELECT *PROJECTION* FROM Table 

*PROJECTION* è espressione per la trasformazione dei dati.

Esempio:

SELECT * FROM ORDER 

i criteri equivalente sarebbe:

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

Nessuna proiezione qui, prendiamo dati senza trasformazione. Se ne vogliamo uno:

SELECT NAME FROM PRODUCT 

Qui, la classe Proiezione entra in gioco. La query di cui sopra può essere riscritta in una query Criteri:

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

Quindi proiettiamo tutte le righe per singola voce: name campo.

Non ci sono altre proiezioni: Projection.rowCount() per esempio (per COUNT(*))

+0

sarebbe contento di sentire ragione dietro downvote – Andrey

+0

Grazie! Chiarire. E sì - ho iniziato da google, ma non ho trovato la risposta. btw; il downvote non era da me. +1 – stiank81

+3

Come per la prima riga della tua risposta, sono arrivato dal primo risultato di google =) –

6

Non so su NHibernate, ma in generale, una proiezione è una trasformazione di un set in un altro set. In SQL, è espresso come SELECT.

Problemi correlati