package com.oa.manager.impl;
import java.util.List;
import org.hibernate.Query;
import com.oa.PagerModel;
import com.oa.manager.AbstractManager;
import com.oa.manager.OrgManager;
import com.oa.model.Organization;
public class OrgManagerImpl extends AbstractManager implements OrgManager
{
public void addOrg(Organization org, int parentId)
{
if(parentId != 0)
{
org.setParent((Organization) this.getHibernateTemplate().load(Organization.class, parentId));
}
this.getHibernateTemplate().save(org);
}
public void deleteOrg(int orgId)
{
//我没有去判断是否删除被关联的主键。因为我想既然我已经设置了关联关系,那么hibernate在实体这层应该会维护关联关系,如果删错了hibernate应该报错的
this.getHibernateTemplate().delete((Organization) this.getHibernateTemplate().load(Organization.class, orgId));
}
public Organization findOrg(int orgId)
{
return (Organization) this.getHibernateTemplate().load(Organization.class, orgId);
//return (Organization) this.getHibernateTemplate().get(Organization.class, orgId);
}
public PagerModel findOrgs(int parentId, int offset, int pageSize)
{
/*
* String hql; if(parentId == 0) { hql = "from Organization o where
* o.parent is null"; //find返回的结果是正常结果,没有懒加载特性 return
* this.getHibernateTemplate().find(hql); }
*
* hql = "from Organization o where o.parent.id = ?"; return
* this.getHibernateTemplate().find(hql, parentId);
*/
/*String countHql = "select count(*) from Organization o where o.parent.id = " + parentId;
if(parentId == 0){countHql = "select count(*) from Organization o where o.parent is null";}
Query query = this.getSession().createQuery(countHql);
int total = ((Number) query.uniqueResult()).intValue(); //通用
//int total = (Integer) query.uniqueResult(); 错误
//int total = ((Long) query.uniqueResult()).intValue(); 正确
System.out.println("total: " + total);
String hql = "select o from Organization o where o.parent.id = " + parentId;
if(parentId == 0)
{
hql = "select o from Organization o where o.parent is null";
}
query = this.getSession().createQuery(hql);
List<Organization> datas = query.setFirstResult(offset).setMaxResults(pageSize).list();
PagerModel pm = new PagerModel();
pm.setTotal(total);
pm.setDatas(datas);
return pm;*/
if(parentId == 0)
{
//return this.searchPaginated("from Organization o where o.parent is null", offset, pageSize);
return this.searchPaginated("from Organization o where o.parent is null");
}
return this.searchPaginated("from Organization o where o.parent.id = ?", parentId);
//return this.searchPaginated("from Organization o where o.parent.id = ?", parentId, offset, pageSize);
}
public void updateOrg(Organization org, int parentId)
{
if(parentId != 0)
{
org.setParent((Organization) this.getHibernateTemplate().load(Organization.class, parentId));
}
this.getHibernateTemplate().update(org);
}
}
评论5
最新资源