Powiedzmy mam następujące dwie tabele:Jak mam się odwoływać do kolumn odwzorowanych tylko na połączenia w JPQL?
@Entity public class Foo {
@Id private int id;
@ManyToOne()
@JoinColumn(name = "bar_id")
private Bar bar;
}
@Entity public class Bar {
@Id private int id;
private Boolean flag;
}
I chcę napisać kwerendę JPQL który zmienia niektóre wartości Bar.flag
w oparciu o zbiór Foo
identyfikatorów.
Gdyby to był zwykły SQL Chciałbym napisać coś takiego:
UPDATE Bar SET flag = true WHERE id IN (SELECT bar_id from FOO where id = 3);
Nie można tłumaczyć to JPQL jednak, ponieważ kolumna bar_id
nie są odwzorowywane na własność podmiotu.
Jako, że bar_id
nie jest bezpośrednio mapowany na obiekcie Foo
, , w jaki sposób mogę uzyskać tego rodzaju zapytanie w JPQL?
gdzie jest kolekcja? –
czy to nie odpowiada? http://stackoverflow.com/questions/3629259/how-do-i-do-a-jpql-subquery –
@sashok_bg Nie próbowałem tego, ale nie sądzę, że tak, ponieważ nie mam surowe klucze obce odwzorowane w encji ('p.country_id' w ich przykładzie) – SCdF