泛型DAO时遇到的问题

cmzx3444 2009-03-11 10:10:39
我写了个泛型的DAO BaseDAOimpl<E> 代码如下
public class BaseDAOimpl<E> extends HibernateDaoSupport implements BaseDAO<E> {

private Class<E> type;

public BaseDAOimpl(Class<E> tpyes) {
this.type = tpyes;
}

public void createEntity(E entity) {

this.getHibernateTemplate().save(entity);
}

public void deleteEntity(E entity) {
this.getHibernateTemplate().delete(entity);

}

@SuppressWarnings("unchecked")
public E getByEntityId(int entityId) {
return (E) this.getHibernateTemplate().get(type, entityId);
}

public void updateEntity(E entity) {
this.getHibernateTemplate().saveOrUpdate(entity);
;
}

public PageModel<E> getEntitys(int firstResult, int maxResults) {
String queryString=StringUtil.getHQL(type);
return getEntitys(queryString, firstResult, maxResults);
}

@SuppressWarnings("unchecked")
public PageModel<E> getEntitys(String hql, int firstResult, int maxResults) {
if (!hql.equals("") && hql != null) {
PageModel<E> entityPage = new PageModel<E>();
List<E> entitys = super.getSession().createQuery(hql)
.setFirstResult(firstResult).setMaxResults(maxResults)
.list();
entityPage.setContext(entitys);
int totalCount = ((Long) super.getSession().createQuery(
StringUtil.getCountQuery(hql)).uniqueResult()).intValue();
Page page = PageUtil
.createPage(totalCount, firstResult, maxResults);
entityPage.setPage(page);
return entityPage;
} else {
return getEntitys(firstResult, maxResults);
}
}
}




当我传进去一个HQL
String queryString = "from Forums as f left join f.parents as p where p.forumId is null";
本来应该查询的结果是一个数组对象,里面放有List<forums>对象
但由于是泛型的,编译期间就认定结果是一个List<forums>而不是List<Object[]>测试的时候报转型异常
不知道大家有没有遇到过类似的情况,该怎么解决啊
...全文
143 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovezx1028 2009-03-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cmzx3444 的回复:]
顺便问一下大家,DAO层要不要考虑查询的逻辑,还是说在业务层再考虑查询的逻辑啊
[/Quote]
不要。直接在业务层调用就可以的啦。


你可以把它转换一下。
luojihaidao 2009-03-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 cmzx3444 的回复:]
顺便问一下大家,DAO层要不要考虑查询的逻辑,还是说在业务层再考虑查询的逻辑啊
[/Quote]

不要
Johnson_Hong 2009-03-11
  • 打赏
  • 举报
回复
1.List <Object>
2.方法多一个参数,指定list中结果的类型
-------------------
查询的逻辑,如构造hql等一般放在dao
cmzx3444 2009-03-11
  • 打赏
  • 举报
回复
顺便问一下大家,DAO层要不要考虑查询的逻辑,还是说在业务层再考虑查询的逻辑啊

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧