package net.changwoo.x1wins.dao; import java.util.List; import net.changwoo.x1wins.entity.Bbs; import net.changwoo.x1wins.entity.Reply; import org.hibernate.SessionFactory; import org.hibernate.criterion.DetachedCriteria; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Repository; @Repository public class BbsDao extends GenericDaoImpl<Bbs, Integer> { private static final Logger logger = LoggerFactory .getLogger(BbsDao.class); @Autowired BbsDao(SessionFactory sf) { super(sf); } @Override protected Class<Bbs> getEntityClass() { return Bbs.class; } private DetachedCriteria getBbsListCriteria(int bbsnum, int pageNum){ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Bbs.class, "B"); // Criteria criteria = createCriteria(Bbs.class, "B"); detachedCriteria.createCriteria("config", "C"); detachedCriteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY); detachedCriteria.add(Restrictions.eq("C.bbsnum", bbsnum)).addOrder(Order.desc("B.num")); return detachedCriteria; // return getSession().createCriteria(Bbs.class, "B").createCriteria("config", "C") // .add(Restrictions.eq("C.bbsnum", bbsnum)).addOrder(Order.desc("B.num")); } public Bbs findBbsDetailById(int id) { Bbs bbs = null; try{ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Bbs.class, "B"); // detachedCriteria.createCriteria("replys","R");//if subclass not exist not is null exception detachedCriteria.add(Restrictions.eq("B.num", id)); // detachedCriteria.addOrder(Order.desc("R.rnum"));//subclass orderby not woring bbs = (Bbs) getHibernateTemplate().findByCriteria(detachedCriteria).get(0); for (Reply replys : bbs.getReplys()) { logger.debug("replys.getRnum() : " + replys.getRnum()); } } catch (Exception e) { logger.debug(e.toString()); } return bbs; } public List findList(int bbsnum) throws Exception{ DetachedCriteria detachedCriteria = DetachedCriteria.forClass(Bbs.class, "B"); detachedCriteria.setResultTransformer(DetachedCriteria.DISTINCT_ROOT_ENTITY); detachedCriteria.createCriteria("config", "C"); detachedCriteria.add(Restrictions.eq("C.bbsnum", bbsnum)).addOrder(Order.desc("B.num")); // int startRow = (pageNum-1)*perPage; // logger.debug("startRow : "+String.valueOf(startRow)); // List<Bbs> list = getHibernateTemplate().findByCriteria(detachedCriteria, startRow, perPage); List<Bbs> list = getHibernateTemplate().findByCriteria(detachedCriteria); // if(list.size()<perPage){ // list = getHibernateTemplate().findByCriteria(detachedCriteria, startRow, perPage+perPage-list.size()); // } return list; } }