Zacatecnicky dotaz jak dostat do JPQL inner join on...
Ahoj, potreboval bych postrcit, jak napsat JPQL: * mam entitu AppUser s 1:M asociaci na entitu Subscription (V PostgreSQL to udelalo vazebni tabulku) * mam entitu History a potreboval bych z History vybrat vsechny zaznamy pro daneho uzivatele s nejakou vlastnosti ze Subscription. V SQL bych napsal takhle: select h.xxx,h.yyy,... from history as h inner join subscription s on h.vlastnost=s.vlastnost inner join basalwebuser_subscription l on s.id=l.subscriptions_id inner join basalwebuser u on u.id=l.basalwebuser_id where u.id=? order by ... Pouzivam JPA+Hibernate. Jak mam dostat to ON h.vlastnost=s.vlastnost do JPQL? Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Ahoj, v JPQL neviem, ale pred týždňom sme tu niečo podobné riešili v Hibernate. Je to v manuáli v 14.3 - jedná sa o WITH clause v HQL. Príklad: /from Cat as cat left join cat.kittens as kitten *with *kitten.bodyWeight 10.0/ Rastislav Bedo Siekel Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk mailto:sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 Petr Fejfar wrote: Ahoj, potreboval bych postrcit, jak napsat JPQL: * mam entitu AppUser s 1:M asociaci na entitu Subscription (V PostgreSQL to udelalo vazebni tabulku) * mam entitu History a potreboval bych z History vybrat vsechny zaznamy pro daneho uzivatele s nejakou vlastnosti ze Subscription. V SQL bych napsal takhle: select h.xxx,h.yyy,... from history as h inner join subscription s on h.vlastnost=s.vlastnost inner join basalwebuser_subscription l on s.id=l.subscriptions_id inner join basalwebuser u on u.id=l.basalwebuser_id where u.id=? order by ... Pouzivam JPA+Hibernate. Jak mam dostat to ON h.vlastnost=s.vlastnost do JPQL? Diky, pf
maven2 + jaxb?
Ahoj. Nez sa psychicky totalne vycerpany uchylim k napisaniu primitivneho shell scriptu, poradte prosim, ako (ktory plugin) mam pouzit pre jaxb do mavenu. Google nasiel viac pluginov, z ktorych jeden zarucene nefunguje (The plugin 'com.sun.tools.xjc.maven2:maven-jaxb-plugin' does not exist or no valid version could be found), ostatne maju bud obsolete howto (neexistujuce repozitare), alebo su tazkopadne (primitivne). OT: Zacinam byt z toho pekne nasrany, pretoze od prechodu na maven nerobim nic ine, len copy-pastujem z roznych pochybnych webov a blogov rozne fragmenty xml kodu s mizernou dokumentaciou a k samotnemu vyvoju sa obrazne povedane dostavam dost zriedka :-) Nehovoriac o fakte, ze za konfiguraky v xml by som obecne vrazdil. Diky -- Dusan
Re: maven2 + jaxb?
2009/9/21 Dusan Zatkovsky msk.c...@gmail.com Ahoj. Nez sa psychicky totalne vycerpany uchylim k napisaniu primitivneho shell scriptu, poradte prosim, ako (ktory plugin) mam pouzit pre jaxb do mavenu. Google nasiel viac pluginov, z ktorych jeden zarucene nefunguje (The plugin 'com.sun.tools.xjc.maven2:maven-jaxb-plugin' does not exist or no valid version could be found), ostatne maju bud obsolete howto (neexistujuce repozitare), alebo su tazkopadne (primitivne). Ja pouzivam org.codehaus.mojo:jaxb2-maven-pluginhttp://mojo.codehaus.org/jaxb2-maven-plugin/ OT: Zacinam byt z toho pekne nasrany, pretoze od prechodu na maven nerobim nic ine, len copy-pastujem z roznych pochybnych webov a blogov rozne fragmenty xml kodu s mizernou dokumentaciou a k samotnemu vyvoju sa obrazne povedane dostavam dost zriedka :-) Nehovoriac o fakte, ze za konfiguraky v xml by som obecne vrazdil. Je pravda, ze nektere pluginy maji malou, obcas i nulovou, dokumentaci. Ale zatim jsem si vystacil s oficialnimi pluginy od Apachu ( http://maven.apache.org/plugins/) a nebo od Codehausu ( http://mojo.codehaus.org/plugins.html). Co se tyka XML konfiguracu, kam se na to hrabe Ant, to se neda srovnat :-). Diky -- Dusan Petr Prochazka
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Dne Mon, 21 Sep 2009 09:45:16 +0200 Rastislav Siekel sie...@prosoft.sk napsal/-a: Ahoj, v JPQL neviem, ale pred týždňom sme tu niečo podobné riešili v Hibernate. Je to v manuáli v 14.3 - jedná sa o WITH clause v HQL. Nedari se mi. Pridal jsem do Subcsription jeste obracenou @ManyToOne asociaci user a sesmolil: select count(*) from History as hist inner join Subscription as subs with hist.vlastnost=subs.vlastnost inner join subs.user as user with user.id=? Na to HQL parser vyhazuje exception: Path expected for join! Dalsi varianta se stejnym vysledkem byla: select count(*) from History as hist inner join Subscription as subs with hist.vlastnost=subs.vlastnost and subs.user_id=? A neuspel jsem, ani kdyz jsem tomu primo zadal ten rano cistovany a odzkouseny SQL command - tam si stezuje pro zmenu JDBCExceptionReporter: Sloupec pojmenovaný id nebyl nalezen v ResultSet. Nevidi nekdo, co delam spatne? Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Presne tak, ako je urobená tá duhá väzba - ...join *subs.*user..., tak musí byť aj tá prvá. Takže nie ...join Subscription... ale ... join *hist.*Subscription Inak Hibernate nemá ako zistiť definíciu toho JOIN-u. Rastislav Bedo Siekel. Ing. Rastislav Siekel Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia E-mail : sie...@prosoft.sk mailto:sie...@prosoft.sk Tel : 041/562 54 91 Fax : 041/562 54 97 Mobil : 0905 34 00 20 Petr Fejfar wrote: Dne Mon, 21 Sep 2009 09:45:16 +0200 Rastislav Siekel sie...@prosoft.sk napsal/-a: Ahoj, v JPQL neviem, ale pred týždňom sme tu niečo podobné riešili v Hibernate. Je to v manuáli v 14.3 - jedná sa o WITH clause v HQL. Nedari se mi. Pridal jsem do Subcsription jeste obracenou @ManyToOne asociaci user a sesmolil: select count(*) from History as hist inner join Subscription as subs with hist.vlastnost=subs.vlastnost inner join subs.user as user with user.id=? Na to HQL parser vyhazuje exception: Path expected for join! Dalsi varianta se stejnym vysledkem byla: select count(*) from History as hist inner join Subscription as subs with hist.vlastnost=subs.vlastnost and subs.user_id=? A neuspel jsem, ani kdyz jsem tomu primo zadal ten rano cistovany a odzkouseny SQL command - tam si stezuje pro zmenu JDBCExceptionReporter: Sloupec pojmenovaný id nebyl nalezen v ResultSet. Nevidi nekdo, co delam spatne? Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Dne Mon, 21 Sep 2009 16:10:04 +0200 Rastislav Siekel sie...@prosoft.sk napsal/-a: Presne tak, ako je urobená tá duhá väzba - ...join *subs.*user..., tak musí byť aj tá prvá. Takže nie ...join Subscription... ale ... join *hist.*Subscription Inak Hibernate nemá ako zistiť definíciu toho JOIN-u. No jo, ale ja zadnou hist.subscription nemam... hist je legacy tabulka plnena non-Java strojem a v Jave jsem ji jen napsal standalone entitu. A ted bych potreboval udelat nejaky jeji run-time join pres vazbu hist.vlastnost=subs.vlastnost, jako mi to funguje v obycejnem SQL Znamena to, ze to bez doplneni stare tabulky o vazbu @ManyToOne nejde? A proc mi nejde to odzkousene SQL te nenapada? Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Ahoj, No jo, ale ja zadnou hist.subscription nemam... hist je legacy tabulka plnena non-Java strojem a v Jave jsem ji jen napsal standalone entitu. A ted bych potreboval udelat nejaky jeji run-time join pres vazbu hist.vlastnost=subs.vlastnost, jako mi to funguje v obycejnem SQL Znamena to, ze to bez doplneni stare tabulky o vazbu @ManyToOne nejde? Presne tak. (Len pre istotu - nedopĺňaš väzbu do tabuľky, len do jej mapovania. Žiadna fyz. väzba tam byť nemusí.) A proc mi nejde to odzkousene SQL te nenapada? To bude asi niečo triviálne - v mapovaní existuje h.id, ale v tom SELECT-e nie je v select-liste, alebo niečo podobné. Bedo. P.S. Len na okraj - nemaž z mailu pôvodné texty - je to rýchlejšie ako pozerať sa do starých mailov, aký vlastne bol pôvodný SQL... :-)
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Dne Mon, 21 Sep 2009 17:11:15 +0200 Rastislav Siekel sie...@prosoft.sk napsal/-a: Znamena to, ze to bez doplneni stare tabulky o vazbu @ManyToOne nejde? Presne tak. (Len pre istotu - nedopĺňaš väzbu do tabuľky, len do jej mapovania. Žiadna fyz. väzba tam byť nemusí.) No tak tomu prestavam rozumet: * puvodne jsem mel @OneToMany AppUser.subscription, coz fyzicky udelalo join table user_subscription s id zazanmu * kdyz jsem doplnil @ManyToOne Subscription.user abych mel obousmernou asociaci, tak mi to fyzicky pridalo foreign key do tabulky subscription, i kdyz by nemelo/nemuselo, protoze vse potrebne ma v te join table * kdyz jsem zkousel vnutit mu tu existujici join table jejim specifikovanim pomoci @JoinTable, tak hbm2ddl narazil na nejake FK constraints - nevim, co s tou tabulkou join table chtel udelat, tak jsem prozatim rezignoval a nechal tam ten FK. A proc mi nejde to odzkousene SQL te nenapada? To bude asi niečo triviálne - v mapovaní existuje h.id, ale v tom SELECT-e nie je v select-liste, alebo niečo podobné. To je mozne, ale nic takoveho nevidim. Vsude pouzivam kvalifikovane odkazy s aliasy tabulek a result set mam: sql.append(select h.*); P.S. Len na okraj - nemaž z mailu pôvodné texty - je to rýchlejšie ako pozerať sa do starých mailov, aký vlastne bol pôvodný SQL... :-) To slysim/ctu poprve - vetsinou se chce, aby se psalo bez nabodenicek a quotovalo. U toho bych zustal, ale priste tam ten SQL sam znovu zkopiruju. Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Ahoj, je nutné používat u obousměrných relací mappedBy=, v tabulce AppUser má být: @OneToMany(mappedBy=appUser) Subscription subscription; v Subscription: @ManyToOne AppUser appUser; Pokud se nepoužije mappedBy, vytvářejí se duplicitní vazby, které již existují. On 21.9.2009 17:26, Petr Fejfar wrote: Dne Mon, 21 Sep 2009 17:11:15 +0200 Rastislav Siekel sie...@prosoft.sk napsal/-a: Znamena to, ze to bez doplneni stare tabulky o vazbu @ManyToOne nejde? Presne tak. (Len pre istotu - nedopĺňaš väzbu do tabuľky, len do jej mapovania. Žiadna fyz. väzba tam byť nemusí.) No tak tomu prestavam rozumet: * puvodne jsem mel @OneToMany AppUser.subscription, coz fyzicky udelalo join table user_subscription s id zazanmu * kdyz jsem doplnil @ManyToOne Subscription.user abych mel obousmernou asociaci, tak mi to fyzicky pridalo foreign key do tabulky subscription, i kdyz by nemelo/nemuselo, protoze vse potrebne ma v te join table * kdyz jsem zkousel vnutit mu tu existujici join table jejim specifikovanim pomoci @JoinTable, tak hbm2ddl narazil na nejake FK constraints - nevim, co s tou tabulkou join table chtel udelat, tak jsem prozatim rezignoval a nechal tam ten FK. A proc mi nejde to odzkousene SQL te nenapada? To bude asi niečo triviálne - v mapovaní existuje h.id, ale v tom SELECT-e nie je v select-liste, alebo niečo podobné. To je mozne, ale nic takoveho nevidim. Vsude pouzivam kvalifikovane odkazy s aliasy tabulek a result set mam: sql.append(select h.*); P.S. Len na okraj - nemaž z mailu pôvodné texty - je to rýchlejšie ako pozerať sa do starých mailov, aký vlastne bol pôvodný SQL... :-) To slysim/ctu poprve - vetsinou se chce, aby se psalo bez nabodenicek a quotovalo. U toho bych zustal, ale priste tam ten SQL sam znovu zkopiruju. Diky, pf
Re: Zacatecnicky dotaz jak dostat do JPQL inner join on...
Dne Mon, 21 Sep 2009 17:32:02 +0200 Jan Dosoudil jan-k...@dosoudil.chr.cz napsal/-a: je nutné používat u obousměrných relací mappedBy=, v tabulce AppUser má být: @OneToMany(mappedBy=appUser) Subscription subscription; v Subscription: @ManyToOne AppUser appUser; Pokud se nepoužije mappedBy, vytvářejí se duplicitní vazby, které již existují. Tak jsem to takhle udelal a kdyz jsem dropnul DB a nechal ji znovu vytvorit, tak zrusil tu join table a do Subscription strcil FK, cili ted to vypada, jak kdybych si ten DDL delal rucne :-) Diky za pomoc, pf