Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    [Java] @Query in Spring Boot, modifica del nome del campo per la ricerca

    Buongiorno a tutti,
    Questa query è OK:
    codice:
    @Query
    codice:
    ("SELECT p FROM Prodotto p WHERE p.descrizione like %:valore%")
    
     public List<Prodotto> getProdotti(@Param("valore") String valore);
    codice:
    
    
    Ma quest'altra no:
    codice:
    @Query
    codice:
    ("SELECT p FROM Prodotto p WHERE p.:campo like %:valore%")
    
     public List<Prodotto> getProdotti(
    @Param("campo") String campo,
    @Param("valore") String valore);
    codice:
    
    
    E' evidente che dovrei modificare il nome del campo, tramite parametro, sapete farlo?
    jabjoint

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,248
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Ma quest'altra no:
    codice:
    ("SELECT p FROM Prodotto p WHERE p.:campo like %:valore%")
    
     public List<Prodotto> getProdotti(
    @Param("campo") String campo,
    @Param("valore") String valore);
    Così infatti no, è scorretto. La prima questione però: da dove arriva il valore di campo? Direttamente dal front-end? Allora "per sicurezza" dovrebbe come minimo essere validato.

    Considera comunque che una query JPQL la puoi anche comporre tu a runtime ed eseguirla con il EntityManager.

    codice:
    TypedQuery<Prodotto> query = entityManager.createQuery("SELECT p FROM ........", Prodotto.class);
    List<Prodotto> prodotti = query.getResultList();

    La query è componibile a runtime.

    O in alternativa a questo, usare la Criteria API (un po' più articolata da usare ...).
    Andrea • andbin.dev
    Senior Java developerSCJP 5 (91%) – SCWCD 5 (94%)

  3. #3
    Quote Originariamente inviata da andbin Visualizza il messaggio
    Così infatti no, è scorretto. La prima questione però: da dove arriva il valore di campo? Direttamente dal front-end? Allora "per sicurezza" dovrebbe come minimo essere validato.

    Considera comunque che una query JPQL la puoi anche comporre tu a runtime ed eseguirla con il EntityManager.

    codice:
    TypedQuery<Prodotto> query = entityManager.createQuery("SELECT p FROM ........", Prodotto.class);
    List<Prodotto> prodotti = query.getResultList();

    La query è componibile a runtime.

    O in alternativa a questo, usare la Criteria API (un po' più articolata da usare ...).
    Grazie: Si può fare anche una Join con una tabella in relazione con l'EntityManager?
    jabjoint

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,248
    Quote Originariamente inviata da jabjoint Visualizza il messaggio
    Si può fare anche una Join con una tabella in relazione con l'EntityManager?
    Sì certo, ovviamente secondo quanto JPQL è in grado di esprimere e fare.
    Andrea • andbin.dev
    Senior Java developerSCJP 5 (91%) – SCWCD 5 (94%)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2023 vBulletin Solutions, Inc. All rights reserved.