Esiste un modo per avere più istruzioni SELECT NEW
in una query jpql
(Hibernate)?espressioni jpa constructor con più SELECT NEW statements
questo funziona per me:
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r) "
+" FROM Item g, Service s, Service l , Service r"
+" WHERE s.id = g.id"
+" AND s.location = l.name"
+" AND s.serviceType = 'type'"
+" AND l.serviceType = 'Location'"
+" AND l.area = r.name"
+" AND r.serviceType = 'Region'")
public List<Item> getAllItemsWithServices();
ottengo il risultato atteso nel mio DTO
.
@Component
public class ItemServiceDTO{
private Item item;
private Service serviceType;
private Service serviceLocation;
private Service serviceRegion;
public ItemServiceDTO(item item, Service serviceType, Service serviceLocation, Service serviceRegion) {
super();
this.item = item;
this.serviceType = serviceType;
this.serviceLocation = serviceLocation;
this.serviceRegion = serviceRegion;
}
Ma quello che voglio è quello di avere una nuova istanza di Language
con il suo contructor.
Ad esempio come questo:
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r), new LanguageDTO()"
+" FROM Item g, Service s, Service l , Service r"
O in una selezione secondaria di ItemService
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r, new LanguageDTO())"
+" FROM Item g, Service s, Service l , Service r"
Ho anche interessati ad utilizzare Map
e List
nei miei DTO oggetti ma ho letto quello non è possibile? È giusto?
L'applicazione di avvio Spring inizia con errori durante l'utilizzo dei due esempi.
Alla fine voglio una mappa di Map<List<Item>,Map<List<LanguageDTO>,List<ItemServiceDTO>>> map;
Qual è il tuo provider JPA (ad esempio EclipseLink, Hibernate)? – Ish
Ci scusiamo, il suo Hibernate – Patrick
ciao. Sto cercando di usare il nuovo operatore ma trovando poche risorse. domanda: crei un'interfaccia jpa repo e inserisci questa dichiarazione: public List- getAllItemsWithServices(); in quel repository? Un esempio o un riferimento a un esempio completo sarebbe molto apprezzato. Grazie –
jscriptor