web-dev-qa-db-fra.com

Comment spécifier un paramètre nommé JPA entouré de caractères génériques?

Comment pourrais-je spécifier une requête JPA comme:

Query q = 
  em.createQuery(
    "SELECT x FROM org.SomeTable x WHERE x.someString LIKE '%:someSymbol%'"
  );

suivi par:

q.setParameter("someSymbol", "someSubstring");

et ne pas déclencher un

org.hibernate.QueryParameterException: could not locate named parameter [id]

Très appréciée!

45

Que diriez-vous

Query q = 
  em.createQuery(
    "SELECT x FROM org.SomeTable x WHERE x.someString LIKE :someSymbol"
);
q.setParameter("someSymbol", "%someSubstring%");

Je suis presque sûr d'avoir résolu une fois votre problème comme ça.

74
musiKk

Pour référence, vous pouvez également utiliser CONCAT:

like CONCAT('%', :someSymbol, '%')
38
xtian

query.setParameter (someSymbol, "%" + someSymbol + "%");

4
Chinmoy