Si consideri il seguente modelloJPA: come recuperare con entusiasmo una collezione elemento incorporato
@Entity
// JPA and JAXB annotations here
public class Employee implements Serializable {
// other fields, annotations, stuffs
...
@ElementCollection(fetch = FetchType.LAZY,
targetClass = Address.class)
@CollectionTable(name = "employee_address",
schema = "hris",
joinColumns = @JoinColumn(name = "employee_id",
nullable = false,
referencedColumnName = "employee_id",
foreignKey = @ForeignKey(ConstraintMode.CONSTRAINT)))
protected Set<Address> addresses;
// setters, getters
...
}
@Embeddable
// JAXB annotations here
public class Address implements Serializable {
// fields, setters, getters
}
La classe Address
è annotato con @Embeddable
annotazioni, e la classe Employee
ha una collezione elemento incorporato di addresses
. La serie di elementi fetch
è impostata su FetchType.LAZY
. Ora, vorrei creare un @NamedQuery
che recuperi tutti i dipendenti con indirizzi inizializzati con entusiasmo. Sapendo che JOIN FETCH
will only work with entity collections annotato con @OneToMany
o @ManyToMany
basato su JPA 2.1, come dovrei creare una query JPQL
valida che mi consenta di recuperare con interesse le raccolte di elementi incorporate?
Come hai concluso che 'join fetch' funziona solo con le entità? Hai fatto un tentativo? –
@DraganBozanovic: in base alla documentazione, "L'associazione a cui fa riferimento il lato destro della clausola FETCH JOIN deve essere un'associazione che appartiene a un'entità restituita come risultato della query. Non è consentito specificare un variabile di identificazione per le entità a cui fa riferimento il lato destro della clausola FETCH JOIN, e quindi i riferimenti alle entità implicitamente recuperate non possono apparire altrove nella query. " –
Il percorso con valori di raccolta deve essere risolto in un campo di associazione –