Sì, è possibile gestire query che estraggano solo un sottoinsieme di campi, ma non è proprio così "semplice". Le cose si dividono in due tipologie:
1) Se devi estrarre un solo campo, lo puoi fare in quanto otterrai come risultato un List<Tipo> dove Tipo sarà uno dei tipi "base": Integer, Long, String, ecc... chiaramente, il tipo corrispondente del campo che devi estrarre.
2) Se devi estrarre una tupla qualunque (che può essere un sottoinsieme dei campi di una entità, oppure l'unione di più campi provenienti da più entità), dovrai prevedere la creazione di una classe apposita (non una Entity) in grado di modellare il record che verrà estratto.
Vediamo un esempio.
Posso avere le seguendi due Entity:
codice:
@Entity
public class Prodotto {
@Id private String codiceProdotto;
private String descrizioneProdotto;
private String codiceClassificazione;
...
}
@Entity
public class Classificazione {
@Id private String codiceClassificazione;
private String descrizioneClassificazione;
...
}
Suppongo di voler estrarre ciascun prodotto con la descrizione della sua classificazione. Creo una classe (non una entity!) che modelli il record che voglio estrarre:
codice:
package pippo;
public class ProdClass {
private String codiceProdotto;
private String descrizioneProdotto;
private String descrizioneClassificazione;
public ProdClass(String codiceProdotto, String descrizioneProdotto, String descrizioneClassificazione) {
...
}
}
E posso scrivere la seguente istruzione JPQL:
codice:
SELECT NEW pippo.ProdClass(p.codiceProdotto, p.descrizioneProdotto, c.descrizioneClassificazione)
FROM Prodotto p, Classificazione c
WHERE (p.codiceClassificazione = c.codiceClassificazione)
Ciao.