Hirdetés

Keresés

Új hozzászólás Aktív témák

  • jetarko
    csendes tag

    Pedig nekem is van hasonló mapping pár, és nem látok benne hibát. Kipróbáltam a saját alkalmazásban átírni a collection-t EAGER-re, de akkor sem csinálta ezt. Azt még esetleg megpróbálhatnád, hogy egy teszt erejéig kiszeded az EAGER-t, és a korábban bemásolt kódrészletet kibővíted így:

    public Team getTeamById(int id) {
    Session session = this.sessionFactory.getCurrentSession();
    Team t = (Team) session.get(Team.class, new Integer(id));

    // ha lazy collection, akkor így betölti az elemeit egy második query-ben
    t.getDrivers().size();

    return t;
    }

    Még esetleg azt tudom elképzelni, hogy dialect-függő a dolog. Én eddig mssql, postres és derby adatbázisokkal használtam, de csak elcseszett join-ok esetében találkoztam hasonlóval.

    Annyit még érdemes megfontolni, hogy az EAGER típusú kapcsolatok nagyon oda tudnak vágni az alkalmazásnak, ezért is alapértelmezett a LAZY. Én mindenhol ezt használom, és inkább egy OpenSessionInViewFilter-t teszek a web.xml-be. Oda akkor viszont már kelleni fog tranzakció is meg egyebek.

    Töröltem az EAGER-t, majd módosítottam a fv-t és így jól működik.
    Az oké, hogy az EAGER lassabbá teszi az alkalmazást, de ha ezeknek a listáknak a mérete kicsi, akkor gondolom nem számít. MySQL-t használok

    (#6228) Szmeby: Többszöröződés, jelen esetbe 2 helyett 8 lett a lista mérete.
    És ezt a külön Select-et hol kéne megvalósítani? Csináljak olyat, hogy a Driver táblából lekérem azokat a sorokat amiknél a team_id megfelel annak amit keresek?

    Bekapcsoltam a show_sql-t és ezt a förmedvény-t dobja. Az utolsó sor csak akkor van ha a fv-be beírom a t.getDrivers().size()-t.

  • Szmeby
    tag

    Pedig nekem is van hasonló mapping pár, és nem látok benne hibát. Kipróbáltam a saját alkalmazásban átírni a collection-t EAGER-re, de akkor sem csinálta ezt. Azt még esetleg megpróbálhatnád, hogy egy teszt erejéig kiszeded az EAGER-t, és a korábban bemásolt kódrészletet kibővíted így:

    public Team getTeamById(int id) {
    Session session = this.sessionFactory.getCurrentSession();
    Team t = (Team) session.get(Team.class, new Integer(id));

    // ha lazy collection, akkor így betölti az elemeit egy második query-ben
    t.getDrivers().size();

    return t;
    }

    Még esetleg azt tudom elképzelni, hogy dialect-függő a dolog. Én eddig mssql, postres és derby adatbázisokkal használtam, de csak elcseszett join-ok esetében találkoztam hasonlóval.

    Annyit még érdemes megfontolni, hogy az EAGER típusú kapcsolatok nagyon oda tudnak vágni az alkalmazásnak, ezért is alapértelmezett a LAZY. Én mindenhol ezt használom, és inkább egy OpenSessionInViewFilter-t teszek a web.xml-be. Oda akkor viszont már kelleni fog tranzakció is meg egyebek.

    OpenSessionInViewFilter: Ez a teljes életciklus alatt nyitva fog tartani egy tranzakciót, nem? Ez nem gáz?

Új hozzászólás Aktív témák