2017-02-07 3 views
0

Ich habe die folgende, die eine NativeQuery enthält, in dem ich einen Parametersatz müssen aber somothing ist falsch beacause Parameter nicht so die Abfrage gesetztcreateNativeQuery den Parameter

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

ist so alle Zeilen zurück. Was ist falsch

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

ist JDBC-Syntax NICHT JPA Native Abfragesyntax. Wenn nummerierte Parameter verwendet werden, lautet die Syntax "? 1", "? 2" usw. Außerdem sollten Sie die Antwort von bc004346 verwenden und diese als JPQL schreiben, also portabel –

Antwort

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(); 
} 

Wenn Sie Positions params verwenden möchten, verwenden Sie folgende Syntax: "?"

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(); 
} 
Verwandte Themen