Hibernate,爱你在心口难开。

来源:互联网 发布:前端书籍推荐知乎 编辑:程序博客网 时间:2024/04/28 07:11

1.多表查询问题大的很,除了用nativeSQL以外,还有三个解决办法:

   MEthod 1:

  private void testUseJDBCInHibernate() throws SQLException{
  Connection conn =super.getSession().connection();    //JDBC Connection
  String   sql="update   BBS_TOPIC     set   RESPONSE_NUM=RESPONSE_NUM+1   where   ID=?";
  PreparedStatement   ps =conn.prepareStatement(sql);
  ps.setInt(1, 1001);
  ps.execute();
  
 }

说明,当session里有了一个BO,假如你这个时候再去update或者insert,那么他会报错说,一个session里拥有多个不同的ReferenceID。这个时候你就得用JDBC的update语句来解决。

Method2:
 private List getTotalCharge(Date statTimeBegin,Date statTimeEnd){
  List res = new Vector();//将用于存放保存的结果集合
        Session session = null;
        ScrollableResults srs = null;
        session =super.getSession();
       srs = session.createQuery("select b.name, count(a.fee)mix(a.chargeBeginTime) max(a.chargeEndTime) from charge a, customer bwhere a.idCustomer = b.idCustomer and a.chargeBeginTime >= ? anda.chargeEndTime < ? gourp by a.idCustomer").setDate(0,statTimeBegin).setDate(1, statTimeEnd).scroll();
        //将查询结果放入List保存
        while(srs.next()){
            res.add(new TotalCharge(srs.getString(0), srs.getDouble(1), srs.getDate(2),srs.getDate(3)));
        }
  
  return res;
 }

Method3:

   在Hibernate中使用Apache的Commons_DB_util

 

   public List query(String sql,Class clazz){//clazz 为BO with setter and getter

           Connection conn = super.getSession().connection();    //JDBC Connection
           QueryRunner qRunner = new QueryRunner();
           List  beans = (List) qRunner.query(conn,sqlString,new BeanListHandler(clazz));

           return beans;

 

}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 嘴皮边缘颜色深怎么办 嘴巴周围肤色暗沉怎么办 中奖彩票被洗了怎么办 牙龈下面长米粒肉疙瘩怎么办 书画印章盖反了怎么办 金龙鱼一个月不吃东西怎么办 罗汉鱼头撞扁了怎么办 房顶开槽埋线白色不一样怎么办 顶上灯挪位置线怎么办 马蜂窝弄掉又来怎么办 蜂窝弄掉又有怎么办 2018年小龙虾底板脏怎么办 一本分数线擦边过怎么办 玩具塑料球扁了怎么办 胶皮与海绵开了怎么办 安卓不支持flash了怎么办 看视频要加载flash怎么办 下水道管子铁皮破了怎么办 炸金花牌一样大怎么办 玩棋牌游戏输了怎么办 苹果7插耳机外放怎么办 出国种菠菜抓了怎么办 在菲做菠菜抓到怎么办 3串1中两个怎么办 微博账号封停怎么办 阴阳师账号被永久封停怎么办 寒刃2账号被禁用怎么办 输了好多钱我该怎么办 亲朋打鱼别处在玩怎么办 做糯米蛋的蛋清怎么办 水田地没耙地平怎么办 宝宝拉鸡蛋花样大便怎么办 电子琴伴奏区无旋律音怎么办 手机触摸屏摔坏了怎么办 手机充着电玩游戏卡怎么办? 4个月宝宝拉肚子怎么办 6个月宝宝上火怎么办 1月婴儿大便干燥怎么办 椰子鞋350线开了怎么办 打完篮球小腿肌肉酸痛怎么办 衣服穿少了感冒怎么办