使用HIBERNATE的DetachedCriteria无限级联取部份字段的查询结果集转换
--后记,本文所讲的实现在我的另一篇博客中提供了完整的源代码与编译好的JAR包,可供下载使用。http://lgdlgd.iteye.com/admin/blogs/619370
有经验的朋友都知道,列表查询时,一般不会查这个实体的全部字段,取部份字段的DetachedCriteria查询,常常 会用到AliasToBeanResultTransformer类把结果转换成POJO:
String[] columns = new String[]{property1,property2,property3.property4};DetachedCriteria criteria = getDetachedCriteria(POJO.class,columns,alias);DAO.findByCriteria(criteria);那么用起来就不麻烦了,你觉得呢?而且你把这封装起来作为基础框架,以后如果你发现有更好的方法的时候,把框架改一改,然后你的业务逻辑也不需要改,这不挺好吗?
博主,我有些hibernate的问题,希望和您请教下,麻烦加我QQ:290851952 谢
7 楼 xiaoyuqi00 2009-12-11 关于hibernate和事务的问题。
、需要立即插入数据时,需要调用fluse方法,但是调用后,事务又无法控制?
、如果需要刚刚插入的数据怎么获得(没有调用fluse,数据库目前还没有数据)?
请指点下 8 楼 lgdlgd 2009-12-11 1、如果你使用HIBERNATE进行插入,那么插入完了不需要查,原来的对象马上就可以用。
2、如果你通过查询的方法获得原来的对象,如下
Java代码
userDao.save(user);
userDao.find("from User u where u.name='xiaoyuqi00'");
userDao.save(user);
userDao.find("from User u where u.name='xiaoyuqi00'");
这时在find执行前HIBERNATE会先执行插入,不需要你担心flush的问题,另外,如果在此事务未结束前,发生可回滚的异常,这个条数据依然会被回滚,不需要担心数据问题。
当然,这些都有个前提,我的项目是由SPRING来控制事务的,上术情况的事务也要交由外层来控制。 9 楼 xiaoyuqi00 2009-12-12 首先谢谢您的解答。
第一次用ssh大型的项目,遇到的问题很多,
一:
1、先save(),此时没有进行数据的插入,
2、再调用list(),此时当插入的那条数据就无法查询出,该怎么解决?
二:
1、我们用的opensessioninview,事务交给spring处理,问题都出现了。当你调用fluse的时候数据已经进数据库,没办法在控制了,但有些数据用必须立即进数据库然后查出。
请加我QQ:290851952。本人真心求教。
10 楼 ming_fanglin 2010-04-22 博主,我有hibernate方面的问题,能加下我的qq么 174725498