Pri izradi jedne aplikacije koristim TopLink kao object-to-relational persistence. Imam sledeći upit koji radi:
Code:
select new entity.custom.KretanjaStavke(artikal.id, stavke.kolicina, artikal.naziv, kretanje.id)
from Kretanja as kretanje
join kretanje.kretanjaStavkeCollection as stavke
join stavke.artikalId as artikal
where kretanje.id > 0 and artikal.grupaId.id = 1 and kretanje.datum = :datum
select new entity.custom.KretanjaStavke(artikal.id, stavke.kolicina, artikal.naziv, kretanje.id)
from Kretanja as kretanje
join kretanje.kretanjaStavkeCollection as stavke
join stavke.artikalId as artikal
where kretanje.id > 0 and artikal.grupaId.id = 1 and kretanje.datum = :datum
Klasu entity.custom.KretanjaStavke sam ja kreirao i koristim je za slanje preko web servisa:
Code:
public class KretanjaStavke {
private Integer id;
private Double vpc;
private Double mpc;
private String porez;
private Double kolicina;
private String artikalNaziv;
private Double suma;
private List<entity.custom.KretanjaPodstavke> podstavke;
public KretanjaStavke() {
}
public KretanjaStavke(Integer id, Double kolicina, String artikalNaziv, Integer kretanjeId) {
this.id = id;
this.kolicina = kolicina;
this.artikalNaziv = artikalNaziv;
this.suma = Double.parseDouble(kretanjeId.toString());
this.podstavke = podstavke;
}
public KretanjaStavke(Integer id, Double kolicina, String artikalNaziv, Integer kretanjeId, List<entity.custom.KretanjaPodstavke> podstavke) {
this.id = id;
this.kolicina = kolicina;
this.artikalNaziv = artikalNaziv;
this.suma = Double.parseDouble(kretanjeId.toString());
this.podstavke = podstavke;
}
.
.
. geteri i seteri
}
public class KretanjaStavke {
private Integer id;
private Double vpc;
private Double mpc;
private String porez;
private Double kolicina;
private String artikalNaziv;
private Double suma;
private List<entity.custom.KretanjaPodstavke> podstavke;
public KretanjaStavke() {
}
public KretanjaStavke(Integer id, Double kolicina, String artikalNaziv, Integer kretanjeId) {
this.id = id;
this.kolicina = kolicina;
this.artikalNaziv = artikalNaziv;
this.suma = Double.parseDouble(kretanjeId.toString());
this.podstavke = podstavke;
}
public KretanjaStavke(Integer id, Double kolicina, String artikalNaziv, Integer kretanjeId, List<entity.custom.KretanjaPodstavke> podstavke) {
this.id = id;
this.kolicina = kolicina;
this.artikalNaziv = artikalNaziv;
this.suma = Double.parseDouble(kretanjeId.toString());
this.podstavke = podstavke;
}
.
.
. geteri i seteri
}
Klasa podstavke izgleda:
Code:
public class KretanjaPodstavke {
private Integer id;
private String nazivPodstavke;
private Integer grupa;
public KretanjaPodstavke(Integer id, String nazivPodstavke, Integer grupa) {
this.id = id;
this.nazivPodstavke = nazivPodstavke;
this.grupa = grupa;
}
.
.
. geteri i seteri
}
public class KretanjaPodstavke {
private Integer id;
private String nazivPodstavke;
private Integer grupa;
public KretanjaPodstavke(Integer id, String nazivPodstavke, Integer grupa) {
this.id = id;
this.nazivPodstavke = nazivPodstavke;
this.grupa = grupa;
}
.
.
. geteri i seteri
}
Jedna stavka moze da ima vise stavki, i tu je moj problem. Kako da napravim upit koji ce mi vratiti listu objekata KretanjaStavke gdje svaka stavka ima listu objekata KretanjaPodstavke? Nesto tipa ovoga:
Code:
select new entity.custom.KretanjaStavke(artikal.id, stavke.kolicina, artikal.naziv, kretanje.id,
(new entity.custom.KretanjaPodstavke(podstavke.id, podstavke.artikalId.naziv, podstavke.artikalId.grupaId.id)
from podstavke))
from Kretanja as kretanje
join kretanje.kretanjaStavkeCollection as stavke
join stavke.artikalId as artikal
join stavke.kretanjaPodstavkeCollection as podstavke
"where kretanje.id > 0 and artikal.grupaId.id = 1 and kretanje.datum = :datum
select new entity.custom.KretanjaStavke(artikal.id, stavke.kolicina, artikal.naziv, kretanje.id,
(new entity.custom.KretanjaPodstavke(podstavke.id, podstavke.artikalId.naziv, podstavke.artikalId.grupaId.id)
from podstavke))
from Kretanja as kretanje
join kretanje.kretanjaStavkeCollection as stavke
join stavke.artikalId as artikal
join stavke.kretanjaPodstavkeCollection as podstavke
"where kretanje.id > 0 and artikal.grupaId.id = 1 and kretanje.datum = :datum
ali ovo ni u ludilu nece da proradi.
Nadam se da mi neko moze pomoci.
Hvala unarpijed...