Sto utilizzando NHibernate con una query SQL per popolare alcuni oggetti entità.NHibernate - AddEntity e AddJoin problem
Ho un oggetto Item, che fa riferimento a un oggetto utente (per indicare il proprietario della voce)
class Item
{
public User User;
}
mia query SQL è (in realtà è più complicata, ed è per questo che non posso usare HQL, ma ho iniziato con questo per assicurarsi che l'AddJoin/AddEntity funzionava):
SELECT {i.*}, {u.*}
FROM Item i INNER JOIN User u ON (i.UserId = u.Id)
WHere i.Id = 5
Ecco il mio codice:
var x = session.CreateSQLQuery(sql)
.AddEntity("i", typeof(Item))
.AddJoin("u", "i.User")
.List();
Quando lo eseguo, ottengo un array bidimensionale. Ogni elemento nell'array contiene un oggetto Item (con la proprietà User inizializzata) e l'oggetto User stesso.
Cosa mi manca? Speravo di ottenere una lista di oggetti Item con la proprietà User inizializzata (che è il modo in cui ho interpretato la documentazione).
Grazie Ben. Ho aggiunto questo - .SetResultTransformer (new DistinctRootEntityResultTransformer()) - ma poi ottengo un elenco di utenti, anziché l'elenco di elementi desiderato. Penserei che l'Entità Root sarebbe l'Oggetto, quindi qualcos'altro deve essere sbagliato. –
Questo non funziona quando c'è un altro add-in. È necessario creare il proprio DistinctRootEntityResultTransformer. Vedi sotto. – Trent