Hibernate - hql 사용 sort 및 조인
Posted 04 13, 2009 22:53, Filed under: Language/ㅡ Hibernate
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
import org.hibernate.criterion.DetachedCriteria;
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;
public List selectWritingBoxByUserId(String userId, int currentPage, int countPerPage) throws DataAccessException {
DetachedCriteria criteria = DetachedCriteria.forClass( WritingBox.class );
criteria.add( Restrictions.eq( "userId" ,userId ) );
criteria.addOrder( Property.forName("createDate").desc() );
// criteria.add( Property.forName("userSeq").between(10, 20));
int start = (currentPage-1) * countPerPage;
List writingBoxList = (List)getHibernateTemplate().findByCriteria(criteria, start, countPerPage);
return writingBoxList;
}
public List selectByUserWritingCodeSeq(String writingCode, int writingSeq, String userId) throws DataAccessException {
DetachedCriteria criteria = DetachedCriteria.forClass( WritingUserTagsView.class );
criteria.add( Restrictions.eq( "writingCode" ,writingCode ) );
criteria.add( Restrictions.eq( "writingSeq" ,writingSeq ) );
criteria.add( Restrictions.eq( "userId" ,userId ) );
criteria.addOrder( Property.forName("tagName").asc() );
return (List)getHibernateTemplate().findByCriteria(criteria);
}
import org.hibernate.criterion.Property;
import org.hibernate.criterion.Restrictions;
public List selectWritingBoxByUserId(String userId, int currentPage, int countPerPage) throws DataAccessException {
DetachedCriteria criteria = DetachedCriteria.forClass( WritingBox.class );
criteria.add( Restrictions.eq( "userId" ,userId ) );
criteria.addOrder( Property.forName("createDate").desc() );
// criteria.add( Property.forName("userSeq").between(10, 20));
int start = (currentPage-1) * countPerPage;
List writingBoxList = (List)getHibernateTemplate().findByCriteria(criteria, start, countPerPage);
return writingBoxList;
}
public List selectByUserWritingCodeSeq(String writingCode, int writingSeq, String userId) throws DataAccessException {
DetachedCriteria criteria = DetachedCriteria.forClass( WritingUserTagsView.class );
criteria.add( Restrictions.eq( "writingCode" ,writingCode ) );
criteria.add( Restrictions.eq( "writingSeq" ,writingSeq ) );
criteria.add( Restrictions.eq( "userId" ,userId ) );
criteria.addOrder( Property.forName("tagName").asc() );
return (List)getHibernateTemplate().findByCriteria(criteria);
}
결과 순서 처리 및 페이징
Criteria의 addOrder() 메소드를 사용하면 결과의 조회순서를 명시할 수 있다. 예를 들어, name 프로퍼티의 오름차순으로, age의 내림차순으로 정렬하고 싶다면 다음과 같은 코드를 사용하면 된다.
Criteria crit = session.createCriteria(Member.class);
crit.addOrder(Order.asc("name"));
crit.addOrder(Order.desc("age"));
net.sf.hibernate.expression.Order 클래스의 asc() 메소드는 오름차순을, desc() 메소드는 내림차순을 의미한다.
페이징 처리를 위해 사용되는 메소드는 Query 인터페이스와 마찬가지로 setFirstResult() 메소드와 setMaxResults() 메소드를 사용하면 된다.
Criteria crit = session.createCriteria(Member.class);
crit.addOrder( Order.asc("name") );
crit.setFirstResult(30);
crit.setMaxResults(15);
"Language / ㅡ Hibernate" 분류의 다른 글
| 7 - HQL과 Criteria를 이용한 조회 (0) | 2009/05/14 |
| 6 - 콜렉션과 many-to-many 매핑 처리 (0) | 2009/05/14 |
| 5 - 객체 다루기(생명주기, CRUD, 객체로딩전략, 영속성전이) (0) | 2009/05/14 |
| 4 - 객체-테이블 매핑 설정 파일 작성 (2) (0) | 2009/05/14 |
| 4 - 객체-테이블 매핑 설정 파일 작성 (1) (0) | 2009/05/14 |
| 3 - 퍼시스턴트 클래스(Persistent Class) 작성 (0) | 2009/05/14 |
| 2- 세션(커넥션) 및 트랜잭션 프로퍼티 설정 (0) | 2009/05/14 |
| 1- Hibernate - 퀵 스타트 (0) | 2009/05/14 |
| Hibernate - Composite-id 사용시 쿼리 구문에서 변수 접근 방법 (0) | 2009/04/28 |
| 초보자를 위한 Hibernate 사용 Tips(2) (2) | 2009/03/21 |
# 한번의 광고 클릭으로, 당신을 대신해서 불우이웃을 도울 기회가 많아집니다.
Response :
0 Trackback
,
0 Comment
Trackback URL : http://develop.sunshiny.co.kr/trackback/197