2012-04-22 3 views
1

최대 절전 모드에서 MySQL 테이블의 레코드를 어떻게 계산합니까? 다음 HQL을 시도했지만 작동하지 않습니다.최대 절전 모드에서 카운트 (*)하는 방법?

SELECT COUNT(*) FROM MEMBERS WHERE `username` =:USERNAME OR `email` =:EMAIL 

그것은 다음과 같은 방법으로 사용됩니다

public boolean checkInfos() { 
    Session newSession = NewHibernateUtil.getSessionFactory().openSession(); 
    int count = (Integer) newSession.createSQLQuery("SELECT COUNT(*) FROM MEMBERS WHERE `username` ='admin' OR `email` ='admin'").uniqueResult(); 

    if (count >= 1) { 
     return false; 
    } else { 
     return true; 
    } 
} 

답변

0

난 당신이

Query q = newSession.createSQLQuery("SELECT COUNT(*) FROM MEMBERS WHERE username = ? OR email =?"); 
q.setParameter(1, "your username"); 
q.setParameter(2, "your email"); 
+0

나는 이것을 시도했지만 다른 에로스 경. –

+2

@Kaan : 오류를 조금 더주세요. 그들은 즉 당신의 문제에 대한 답을 담고 있습니다. 오류를 마치 쓰레기처럼 무시해서는 안됩니다. 어떤 오류가 당신에게 말하려고하는지 이해하지 못한다면, 질문을 편집하고 포함 시켜서 평신도의 용어로 설명 할 수 있도록해야합니다. – BalusC

0

Select count(*)Long 아닌 Integer 반환해야 할 것 같아요.

한 가지 더 : 사용중인 백틱은 모든 데이터베이스에서 허용되지 않습니다.

그런데 HQL에서도 count (*)를 사용할 수 있습니다. 즉, createSQLQuery 대신 createQuery를 사용할 수 있습니다. HQL의 장점은 한 데이터베이스에서 다른 데이터베이스로 이식 할 수 있다는 점입니다. 이는 항상 SQL 문과 다를 수 있습니다.

0

또한 기준을 사용하여이 작업을 수행 할 수 있습니다.

private Number getCount(){ 
    Criteria criteria = session.createCriteria(Members.class); 
    criteria.add(Restrictions.or(Restrictions.eq("username", "admin"), Restrictions.eq("email","admin"))); 
    criteria.setProjection(Projections.rowCount()); 
    return (Number) criteria.list(); 
} 
관련 문제