2017-06-22 2 views
1

S'il vous plaît aidez-moi,Spring/Hibernate Select Count (*) Personnalisation de la requête?

Voici mon DAO qui m'a donné le nombre correct de rangées mais je veux ajouter quelques conditions.

@Override 
public int getAllRows(SearchForm searchForm) { 
    logger.info("SearchForm Detail :: " + searchForm); 
    Session session = this.sessionFactory.getCurrentSession(); 
    Query query = (Query) session.createQuery(" select count(*) from EmployeeVO"); 
    int rows = ((Number) query.uniqueResult()).intValue(); 
    logger.info("Number of Rows :: " + rows); 
    return rows; 
} 

ceci est mon MySQL Query:

SELECT prenom

DE employés

OÙ prenom LIKE '% ab%'

ET salaire> 0 et salaire < 100000;

Répondre

0
Query query = (Query) session.createQuery("SELECT first_name FROM employees WHERE first_name LIKE ? AND salary > ? and salary < ?"); 
query.setParameter(0, '%ab%'); 
query.setParameter(1, 0); 
query.setParameter(2, 100000); 

Vous pouvez également utiliser les paramètres nommés également comme ci-dessous:

Query query = (Query) session.createQuery("SELECT first_name FROM employees WHERE first_name LIKE :first_name AND salary > :min_salary and salary < :max_salary"); 
query.setParameter(first_name, '%ab%'); 
query.setParameter(min_salary, 0); 
query.setParameter(max_salary, 100000); 

Une autre alternative consiste à utiliser l'API Critères Hibernate:

Criteria criteria = session.createCriteria(Employee.class); 
criteria.add(Restrictions.eq("first_name", "%ab%")); 
criteria.add(Restrictions.lt("salary ", 0)); 
criteria.add(Restrictions.gt("salary ", 100000)); 
List list = criteria.list(); 
+0

De plus, vous pouvez modifier en couplé de manière plus lâche chemin: USE: query.setParameter (prénom, "%" + searchForm.getFirstName() + "%"); – GaurZilla

+0

Merci de votre réponse, mais je veux personnaliser "first_name dans la clause Where, puis-je mettre? À la place de first_name et setString? – oldmidas

+0

@oldmidas Non. Vous ne pouvez pas paramétrer la propriété first_name pour transmettre la valeur lors de l'exécution. –