2017-02-07 14 views
0

У меня есть следующее, содержащий NativeQuery, где мне нужно, чтобы установить параметр, но somothing неправильно обусловлен параметр не установлен, так что запросcreateNativeQuery установить параметр

SELECT movieId, title, genres FROM movies where title like '%%'" 

так возвращает все строки. Что плохое

public List<T> findMovie(String keyword) { 
     Query q = getEntityManager().createNativeQuery("SELECT movieId, title, genres FROM movies where title like '%?%'", entityClass); 
     q.setParameter(1, keyword); //etc 
     return q.getResultList(); 
    } 
+1

это синтаксис JDBC NOT JPA. При использовании пронумерованных параметров синтаксис равен «? 1», «? 2» и т. Д. Кроме того, вы должны использовать ответ bc004346 и писать это как JPQL, следовательно, переносимый –

ответ

0
public List<T> findMovie(String keyword) { 
    Query q = getEntityManager().createQuery("SELECT movieId, title, genres FROM movies where title like :keyword", entityClass); 
    q.setParameter("keyword", keyword); //etc 
    return q.getResultList(); 
} 

Если вы хотите использовать позиционный Params, используйте следующий синтаксис: "?"

public List<T> findMovie(String keyword) { 
    Query q = getEntityManager().createQuery("SELECT movieId, title, genres FROM movies where title like ?1", entityClass); 
    q.setParameter(1, keyword); //etc 
    return q.getResultList(); 
}