sql >> Databasteknik >  >> RDS >> Mysql

NHibernate QueryOver och MYSQL

Jag förväntar mig att detta är bindande på ett sätt (bara för läsning). I det här scenariot kan du dra nytta av Projections. se mer här 16.6. Projektioner

Du kan skapa något DTO-objekt för ditt rutnät och liknande dokumentation:

CatSummary summaryDto = null;
IList<CatSummary> catReport =
    session.QueryOver<Cat>()
        .SelectList(list => list
            .SelectGroup(c => c.Name).WithAlias(() => summaryDto.Name)
            .SelectAvg(c => c.Age).WithAlias(() => summaryDto.AverageAge))
        .TransformUsing(Transformers.AliasToBean<CatSummary>())
        .List<CatSummary>();

Du borde kunna göra det så här (jag kan inte kontrollera det just nu, men det borde vara tydligt)

LietadloDTO lietadloDTO = null;
dgv.DataSource = session
  .QueryOver<Lietadlo>(() => f)
  .JoinAlias(() => f.Spolocnostt_Id,() => t)
  .JoinAlias(() => f.Typp_Id, ()=> r)
  .Where(() => t.Pocetlietadiel > 2)
  .And(() => r.Name == "Boeing-747")
  .SelectList(list => list
    .Select(f => f.Id).WithAlias(() => lietadloDTO.Id)
    .Select(t => t.Name).WithAlias(() => lietadloDTO.Name)
    ...
    )
  .TransformUsing(Transformers.AliasToBean<LietadloDTO>())
  .List<LietadloDTO>()
  .ToList<LietadloDTO>();

Så i det här fallet kommer du att tvinga NHibernate att skapa Projection (endast 1 SELECT-sats) och returnera all nödvändig data på en gång




  1. VÄLJ en kolumn om den andra är null

  2. Felkod:1406. Data för lång för kolumn - MySQL

  3. FEL:arraystorleken överskrider det maximalt tillåtna (1073741823)

  4. Tomcat6 kan inte ansluta till MySql (drivrutinen har inte tagit emot några paket från servern)