在我的spring项目中,我在Dao类中使用此方法返回表中所有行的List:
@SuppressWarnings("unchecked")
@Transactional
public List<E> findAll() {
try {
List<E> instance = sessionFactory.getCurrentSession().createCriteria(entity.getClass()).list();
System.out.println("returned instance with "+instance.size()+" items");
return instance;
} catch (RuntimeException re) {
System.out.println("returned null");
return null;
}
}
从我的服务类中使用此方法调用此方法:
@PreAuthorize("hasPermission(#user, 'listagem_'+#this.this.name)")
@Transactional
public List<E> listagem() {
return dao.findAll();
}
最后一个从我的控制器调用此方法:
@RequestMapping(value="listagem/{pagina}/{items}/{ordem}")
@PreAuthorize("hasPermission(#user, 'listagem_'+#this.this.name)")
public ModelAndView listagem(@PathVariable("pagina") String pagina, @PathVariable("items") String items, @PathVariable("ordem") String ordem) {
ModelAndView mav = new ModelAndView();
mav.setViewName("privado/"+this.getName()+"/listagem");
mav.addObject("lista", serv.listagem());
mav.addObject("pagina", pagina);
mav.addObject("items", items);
mav.addObject("ordem", ordem);
return mav;
}
@RequestMapping(value="listagem.json", method=RequestMethod.GET)
@PreAuthorize("hasPermission(#user, 'listagem_'+#this.this.name)")
public ModelAndView listagem_json(@RequestParam("pagina") String pagina, @RequestParam("items") String items, @RequestParam("ordem") String ordem) {
ModelAndView mav = new ModelAndView();
mav.setViewName(this.getName()+"/listagem");
mav.addObject("lista", serv.listagem());
mav.addObject("pagina", pagina);
mav.addObject("items", items);
mav.addObject("ordem", ordem);
return mav;
}
问题是来自Dao类的方法findAll它返回零元素,尽管我确保数据库中的表至少填充了一行。
任何人都可以看到这里有什么问题?我在其他项目中使用了相同的代码,并且没有任何问题。这个当前的项目是我第一次将这个泛型Dao类与通用控制器和服务类一起使用。
答案 0 :(得分:1)
如何试用setResultTransformer()
;
List<E> instance = sessionFactory.getCurrentSession().createCriteria(entity.getClass())
.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY).list();