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 ...).