Нужна помощь по синтаксису Hibernate и JPQL - PullRequest
0 голосов
/ 07 декабря 2010

Я новичок в разработке фреймворка и гибернации, у меня есть простая проблема, которую я не могу решить

public static void listMembers(int page,int pageSize,String[] fields,String[] values) { 
    List<Member> members = Member.find(query,params).fetch();
    render(members);
}

Я не уверен, как написать запрос и параметры
так, как я хочу каждыйполе для проверки по соответствующему значению

примерно так (что приводит к ошибкам):

public static void listMembers(int page,int pageSize,String[] fields,String[] values) { 
    String query = "" ;
    String[] params = new String[values.length*2] ;
    int i = 0 ;
    for(i = 0 ; i < fields.length-1 ; i+=2 ) {
        query += "?"+(i+1)+" like ?"+(i+2)+" AND" ;
        params[i]   = fields[i] ;
        params[i+1] = "%"+values[i]+"%" ;
    }
    query += "?"+(i+1)+" like ?"+(i+2) ;
    params[i]   = fields[i] ;
    params[i+1] = values[i] ;


    List<Member> members = Member.find(query,params).fetch();
    render(members);
}

Редактировать: так, что запрос будет:

?1 like ?2 AND ?3 like ?4 AND .....   

ипараметры будут:

field1,%value1%,field2,%value2%,...

1 Ответ

0 голосов
/ 07 декабря 2010

Я думаю, что лучше использовать setParameter () и EntityManager:

String jpql = "select m from Member m where ";
for (int i = 0; i < fields.length; i++) {
 jpql += (i > 0 ? " AND " : "") + fields[i] + " like '%?%' ";
}
Query q = entityManager.createQuery(jpql);
for (int i = 1; i <= values; i++) {
 q.setParameter(i, values[i]);
}
List<Members> members = q.getResultList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...