|
Ahojte, v staršom projekte som používal Hibernate, kde sa SELECT cez Criteria API vytvoril podľa anotácie @Fetch ako JOIN master a detail tabuľky. Pri použití Hibernate cez JPA 2 sa bez ohľadu na @Fetch vytvoria 2 selecty - jeden pre master a jeden pre detail. Riešenie som našiel len v použití metódy fetch() priamo v CriteriaQuery: CriteriaQuery<CestaTO> c = cb.createQuery(CestaTO.class); Root<CestaTO> emp = c.from(CestaTO.class); emp.fetch("cestujuci"); c.select(emp); Toto je ale podľa mňa hlúposť, pretože to bude treba definovať v každom query, vôbec sa neprejaví v Hibernate definovaná property - hibernate.max_fetch_depth, a najhoršie - pri údržbe projektu sa napr. zmení datový model a bude treba všetky tieto Query prepísať. Určite ste to niekto riešil, pretože takto to určite nebude používať nik. Takže moja otázka - ako ste to riešili? Dík, Rastislav "Bedo" Siekel P.S. Ukážka mojej definície DTO: @Entity() @Table(name = "CESTA") public class CestaTO extends BaseTO implements Serializable { @Column(name = "idCestujuci", nullable = false) private Integer idCestujuci; @ManyToOne() @JoinColumn(name = "idCestujuci", insertable = false, updatable = false, nullable = false) @Fetch(FetchMode.JOIN) private UzivatelTO cestujuci; ... } Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : <[email protected]> Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 |
