Zacatecnicky dotaz jak dostat do JPQL inner join on...
Jan Dosoudil
jan-konf na dosoudil.chr.cz
Pondělí Září 21 17:32:02 CEST 2009
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 <siekel na 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
Další informace o konferenci Konference