Domanda

Ho queste tabelle:

Person -> PersonFavorites, PersonCompany
PersonCompany -> Company
.

Ho ora di fare i seguenti selezionati con Nibernate e QUERYOVER:

select * from Person 
  inner join PersonFavorites on Person.Id = PersonFavorites.PersonId 
  inner join PersonCompany on Person.Id = PersonCompany.PersonId 
  inner join Company on Company.Id = PersonCompany.CompanyId
where ...
.

Qualcuno può darmi un campione, come posso farlo?- Il mio problema è che devo unirmi a più tavoli da tavolini -> PersonomCompany -> Azienda.The Join Person -> PersonomPany e Person -> Personalfavorites non sono problemi - ma il prossimo passo da Personcompany -> Azienda.

È stato utile?

Soluzione

La mappatura dovrebbe essere simile al seguente:

Entità

class Person
{
    Collection<PersonFavorites> favorites;
    Collection<PersonCompany> companies;
}

class PersonFavorite
{
    Person person;
    Favorite favorite;
}

class PersonCompany
{
    Person person;
    Company company;
}
.

Query

Person personAlias = null;
PersonFavorites personfavouriteAlias = null;
PersonCompany personCompanyAlias  = null;
Company companyAlias = null;
Favorite favouriteAlias = null;

var query = Session.QueryOver<Person>(() => personAlias)
    .joinAlias(() => personAlias.favorites, () => personfavouriteAlias)
    .joinAlias(() => personAlias.companies, () => personCompanyAlias)
    .joinAlias(() => personfavouriteAlias.Favourite, () => favouriteAlias)
    .joinAlias(() => personCompanyAlias.Company, () => companyAlias)
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top