Immagino sia facile, ma non riesco a capirlo.Come si costruisce un join inverso per una relazione unidirezionale?
Se ho entità Foo e Bar:
@Entity
class Foo{
@OneToMany
List<Bar> bars;
}
@Entity
class Bar{
@Column
int data;
}
e se voglio creare un (javax.persistence.criteria.Join<Foo, Bar>
) oggetto Join, che posso fare in questo modo:
Root<Foo> root = ...;
Join<Foo,Bar> join = root.join(Foo_.bars);
Ma come posso fare un inverso unirsi
Join<Bar,Foo> inverseJoin = barRoot.join....()...?
dal momento che non ho un campo java nella barra di classe che punta alla sua parentesi Foo t, è una relazione unidirezionale?
Bene, la risposta ovvia è: non è una relazione unidirezionale se hai bisogno di un join inverso. Avete controllato utilizzando una relazione bidirezionale (aggiungendo '@ ManyToOne' a' Bar')? – mabi
L'ho preso in considerazione, ma vorrei evitarlo, se possibile. –
Probabilmente è necessario ricorrere a una query SQL raw, quindi. Non so come fare ciò che vuoi e IMHO non dovrebbe esserlo. – mabi