jpa constructeur expressions avec de multiples SÉLECTIONNEZ de NOUVEAUX états
Est-il un moyen d'avoir plusieurs SELECT NEW
déclarations dans un jpql
requête (Hibernate)?
Cela fonctionne pour moi:
@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();
- Je obtenir le Résultat escompté dans mon 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;
}
Mais ce que je veux, c'est avoir une nouvelle instance de Language
avec son constructeur.
Par exemple comme ceci:
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r), new LanguageDTO()"
+" FROM Item g, Service s, Service l , Service r"
Ou dans une sous-sélection de ItemService
@Query("SELECT NEW com.test.project.dto.ItemService(g,s,l,r, new LanguageDTO())"
+" FROM Item g, Service s, Service l , Service r"
Je m'intéresse également à l'aide de Map
et List
dans mon DTO Objets, mais j'ai lu c'est pas possible? Est ce que le droit?
Mon Ressort de démarrage de l'application démarre avec des erreurs lors de l'utilisation du deux exemples.
À la fin, je veux une Carte de Map<List<Item>,Map<List<LanguageDTO>,List<ItemServiceDTO>>> map;
- Quel est votre fournisseur JPA (c'est à dire EclipseLink, Hibernate)?
- Désolé, sa mise en veille prolongée
- bonjour. Je suis en train d'utiliser l'opérateur new, mais ne trouvent que peu de ressources. question: voulez-vous créer une app pensions de l'interface et le lieu de cette déclaration: public List<Item> getAllItemsWithServices(); en ce qui repo? Un exemple ou une référence à un exemple complet serait très appréciée. Merci
Vous devez vous connecter pour publier un commentaire.
Techniquement, par définition, de JPQL clause select, il permettrait à de multiples constructeur expressions.
Exemple:
Cependant, je viens de découvrir qu'Hibernate ne le permet pas. Quand j'ai changé de fournisseur JPA de mise en veille prolongée pour EclipseLink, il fonctionne. Donc, vous devrez peut-être consulter votre fournisseur si une telle syntaxe de la requête est autorisée.
Prendre note, toutefois, que lors de l'utilisation de l'opérateur NEW, votre constructeur a avoir des arguments (au moins un). De sorte que cette expression ne fonctionne pas:
Sur votre deuxième question, à savoir si il est possible d'utiliser
List
etMap
, je suis assez confus comment vous pouvez utiliser ces collections dans votre requête. Toutefois, prenez note qu'il n'est pas possible d'avoir de la collection appréciée des expressions de chemin dans votre clause SELECT selon la définition de la JPQL SELECT_CLAUSE.