[Java lista] JPQL Result Type of the SELECT Clause

Szomor Attila aszomor at computertechnika.hu
2010. Már. 12., P, 16:48:00 CET


2010.03.12. 16:26:59 dátumon Verhás István <istvan at verhas.com> írta:

> Amire te vágysz az a lazy loading. Ezt támogatj a JPA ha az attributum
> nem primitív hanem entitás. Az alapértelmezett fetch type a kapcsolat
> számosságától függ. Ha a túloldalból csak egy van akkor eager vagyis
> betölti, ha sok akkor lazy. Szóval a sokkal nem kell törődni azt eleve
> nem tölti be csak amikor meghívod a gettert, az egy az egyes illetve az
> n az egyes-nél pedig be lehet állítani pl. így
> @OneToOne(fetch=FetchType.LAZY)
> Ezt kérdezted?
> üdv
> vi

Sajna nem, ezt (és még sok ilyet) szeretném elkerülni:
------------------------------------------------------
String query = "SELECT e FROM TerapiaTerap e";
if (gridParams.getOtherGridParams().containsKey("GENERIC_GRID_QUERY")) {
    query = "SELECT e.id,e.tenam,e.tecna,e.teflg FROM TerapiaTerap e";
}
response = JPAUtils.getBlockFromQuery(
    gridParams.getAction(),
    gridParams.getStartPos(),
    blockSize,
    gridParams.getFilteredColumns(),
    gridParams.getCurrentSortedColumns(),
    gridParams.getCurrentSortedVersusColumns(),
    TerapiaTerap.class,
    query,
    new Object[0],
    em
);
if (gridParams.getOtherGridParams().containsKey("GENERIC_GRID_QUERY")) {
    // EZ AZ AMIT NEM SZERETNÉK !!!
    VOListResponse voListResponse = (VOListResponse)response;
    ArrayList<TerapiaTerap> terapiaList = new ArrayList<TerapiaTerap>();
    List rows = voListResponse.getRows();
    for (int c=0; c<rows.size(); c++) {
       TerapiaTerap terapiaTerap = new TerapiaTerap();
       Object[] row = (Object[])rows.get(c);
       terapiaTerap.setId((BigInteger)row[0]);
       terapiaTerap.setTenam((String)row[1]);
       terapiaTerap.setTecna((String)row[2]);
       terapiaTerap.setTeflg((String)row[3]);
       terapiaList.add(terapiaTerap);
    }
    response = new  
VOListResponse(terapiaList,voListResponse.isMoreRows(),voListResponse.getResultSetLength());
    // EDDIG TART A TRANSFORMÁCIÓ OBJECT[] to ArrayList<TerapiaTerap> $$$
}
return response;
mivel a JPA válasz egy "Object[]" nem pedig egy "TerapiaTerap" osztály a  
kért négy attributummal feltöltve (sajnos)!

Ami miatt érdekel ennek a táblának száznál több egyszerú attributuma van,  
amiből a kliensnek 4 kell abból is kettő hidden a grid-ben.

-- 
Pécs is the European Capital of Culture in 2010


További információk a(z) Javalist levelezőlistáról