🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: alt.pl.comp.lang.csharp
3 messages
3 total messages Started by GrzybSon Wed, 12 May 2010 07:48
Nhibernate i inner join
#21474
Author: GrzybSon
Date: Wed, 12 May 2010 07:48
29 lines
1677 bytes
Witam,

ostatnio móżdże NHibernate i mam problem z Criteria API.

SELECT     plyty.id, plyty.data_wypalenia, plyty.uwagi, rodzaj_plyty.nazwa
AS rodzaj, producent_plyty.nazwa AS producent
FROM         plyty INNER JOIN
                      producent_plyty ON plyty.id_producenta_plyty =
producent_plyty.id INNER JOIN
                      rodzaj_plyty ON plyty.id_rodzaju_plyty =
rodzaj_plyty.id
ORDER BY plyty.data_wypalenia DESC

Jest to zapytanie do przykładowej bazy filmów - tabele:
producent_plyty i rodzaj_plyty to słowniki.

Tabela płyta zawiera kolumny:
id (PK),
data_wypalenia,
id_producenta_plyty, (FK)
id_rodzaju_plyty, (FK)
uwagi

Jak przerobić powyższe zapytanie SQLowe na odpowiednik NH wykorzystując
CriteriaAPI?

-- 
Pozdro,
 Maćko
Re: Nhibernate i inner join
#21475
Author: Filip Zawada
Date: Sat, 15 May 2010 01:29
18 lines
1569 bytes
Witaj,


będziesz potrzebował czegoś w okolicy:

session.CreateCriteria<Plyta>()
    .CreateAlias("Producent", "prod")
    .CreateAlias("Rodzaj", "rodz")
    .AddOrder(new Order("DataWypalenia", false))
    .List<Plyta>();

to Ci załaduje obiekty typu Plyta razem z powiązanymi Producentem i
Rodzajem.
Oczywiście o ile poprawnie zdefiniowałeś mapowania NH, o których nic
nie wspominasz.

Pozdrawiam,
Filip Zawada
Re: Nhibernate i inner join
#21476
Author: Filip Zawada
Date: Sat, 15 May 2010 01:31
5 lines
1323 bytes
powinno być oczywiście
AddOrder(new Order("rodz.DataWypalenia", false))

Pozdrawiam,
Filip Zawada
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads