乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      CJSDN開發(fā)者社區(qū) - hibernate怎么進(jìn)行多表查詢???

       jinhao2003 2008-09-02

      Topic: hibernate怎么進(jìn)行多表查詢???

        Print this page

      1.hibernate怎么進(jìn)行多表查詢??? Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-16 15:00

      hibernate怎么進(jìn)行多表查詢???
      就象sql一樣,select a.x, b.y from a, b where ....
      hibernate 要對(duì)這樣的查詢?cè)賹懹成湮募?*.hbm.xml 和相應(yīng)的持久類嗎?

      請(qǐng)給一個(gè)完整的代碼,謝謝

      2.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: linux_china
      Posted on: 2004-03-16 18:41

      你的這個(gè)例子就是簡單的SQL語句,直接執(zhí)行就可以啦。
      session.connection.createStatement.executeQuery(SQLSelect),然后是簡單的jdbc操作啦。!

      3.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-16 20:42

      你這不是用hibernate的查詢

      4.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-16 20:45

      這是用hibernate查詢單表的例子:

      Session dbSession = null;
      try {
      SessionFactory sessionFactory = new Configuration().config().buildSessionFactory();
      dbSession = sessionFactory.openSession ();
      Transaction transaction = dbSession.beginTransaction();
      StringBuffer hql = new StringBuffer (“from MemberTable where Name=’”);
      hql.append (“userName”);
      hql.append(“’”);
      Query query = dbSession.createQuery (hql.toString());
      query.setFirstResult(0);
      query.setMaxResults(1);
      transaction.commit();

      Iterator memberIterator = query.iterate();
      if (memberIterator.hasNext()) {
      MemberTable memberObj = (MemberTable) memberIterator.next();//要是查詢多表的話,在這里該怎么做?
      System.out.println (memberObj.getPassword);
      }
      } catch (Exception e) {
      System.err.println Envelope;
      } finally {
      try { dbSession.close(); } catch (Exception e) {}
      }

      5.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: Jove
      Posted on: 2004-03-16 20:51

      請(qǐng)仔細(xì)閱讀Hibernate自帶的文檔(hibernate-2.1\doc)

      from Hibernate中文手冊(cè)

      10.2. from 子句
      可能最簡單的Hibernate查詢是這樣的形式:

      from eg.Cat

      它簡單的返回所有eg.Cat類的實(shí)例。

      大部分情況下,你需要賦予它一個(gè)別名(alias),因?yàn)槟阍诓樵兊钠渌胤揭矔?huì)引用這個(gè)Cat。

      from eg.Cat as cat

      上面的語句為Cat賦予了一個(gè)別名cat 。所以后面的查詢可以用這個(gè)簡單的別名了。as關(guān)鍵字是可以省略的,我們也可以寫成這樣:

      from eg.Cat cat

      可以出現(xiàn)多個(gè)類,結(jié)果是它們的笛卡爾積,或者稱為“交叉”連接。

      from Formula, Parameter
      from Formula as form, Parameter as param

      讓查詢中的別名服從首字母小寫的規(guī)則,我們認(rèn)為這是一個(gè)好習(xí)慣。這和Java對(duì)局部變量的命名規(guī)范是一致的。(比如,domesticCat).

      6.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: NoLimited
      Posted on: 2004-03-18 09:39

      好像大家討論的有點(diǎn)偏差,樓主好像沒說明白,你這個(gè)多表查詢select a.x, b.y from a, b where ....既然完全可以在sql中寫明,那就完全可以像單表一樣操作,即:

      StringBuffer hql = new StringBuffer (“from a,b where Name=’”);
      ......

      7.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-18 11:39

      我的問題是當(dāng)查詢結(jié)果為多個(gè)表的結(jié)果時(shí)
      (可以做到嗎?比如一個(gè)SQL查詢?yōu)閟elect a.x,b.y from a,b where a.c=b.c)

      那么HQL怎么寫?以及怎么讀出來??

      Iterator memberIterator = query.iterate();
      if (memberIterator.hasNext()) {
      MemberTable memberObj = (MemberTable) memberIterator.next();//要是查詢多表的話,在這里該怎么做?
      System.out.println (memberObj.getPassword);
      }
      } catch (Exception e) {
      System.err.println ;
      } finally {
      try { dbSession.close(); } catch (Exception e) {}
      }

      8.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: Jove
      Posted on: 2004-03-18 11:47

      似乎Iterator.next()返回的是Object[]
      看文檔啦,老兄..

      9.Re:hibernate怎么進(jìn)行多表查詢??? [Re: Jove] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-18 12:34

      Jove wrote:
      似乎Iterator.next()返回的是Object[]
      看文檔啦,老兄..

      是啊,我又沒說不是

      我的問題是當(dāng)查詢結(jié)果為多個(gè)表的結(jié)果時(shí)
      (可以做到嗎?比如一個(gè)SQL查詢?yōu)閟elect a.x,b.y from a,b where a.c=b.c)

      那么HQL怎么寫?以及怎么讀出來??

      Iterator memberIterator = query.iterate();
      if (memberIterator.hasNext()) {
      MemberTable memberObj = (MemberTable) memberIterator.next();//要是查詢多表的話,在這里該怎么做?這個(gè)查詢結(jié)果是個(gè)單表結(jié)果,可以用(MemberTable)...這樣來強(qiáng)制轉(zhuǎn)化。要是查詢結(jié)果是多個(gè)表的結(jié)果怎么辦?

      hibernate要對(duì)每一個(gè)查詢集做一個(gè)映射嗎(分別寫一個(gè)對(duì)應(yīng)的*.hbm.xml及*.java)文件???只能這么做?

      System.out.println (memberObj.getPassword);
      }
      } catch (Exception e) {
      System.err.println ;
      } finally {
      try { dbSession.close(); } catch (Exception e) {}
      }

      10.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: Jove
      Posted on: 2004-03-18 13:34

      sample..

      001 try {
      002   System.out.println("test..");
      003   List list =
      004     s
      005       .createQuery("select user.id,relation.id from User user,Relationship relation")
      006       .list();
      007   for (Iterator iter = list.iterator(); iter.hasNext();) {
      008     Object[] record = (Object[]) iter.next();
      009     System.out.print(record[0] + "---" + record[1]);
      010   }
      011   s.close();
      012 } catch (HibernateException e) {
      013   System.err.println(e.getMessage());
      014 }

      11.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-18 13:37

      這里用上了 hibernate 了嗎?

      12.Re:hibernate怎么進(jìn)行多表查詢??? [Re: Jove] Copy to clipboard
      Posted by: worldcreatxr
      Posted on: 2004-03-18 13:40

      linux_china wrote:
      你的這個(gè)例子就是簡單的SQL語句,直接執(zhí)行就可以啦。
      session.connection.createStatement.executeQuery(SQLSelect),然后是簡單的jdbc操作啦。!


      Jove wrote:
      sample..

      001 try {
      002   System.out.println("test..");
      003   List list =
      004     s
      005       .createQuery("select user.id,relation.id from User user,Relationship relation")
      006       .list();
      007   for (Iterator iter = list.iterator(); iter.hasNext()Wink {
      008     Object[] record = (Object[]) iter.next();
      009     System.out.print(record[0] + "---" + record[1]);
      010   }
      011   s.close();
      012 } catch (HibernateException e) {
      013   System.err.println(e.getMessage());
      014 }


      你寫的是不是直接使用了session.connection.createStatement.executeQuery(SQLSelect)這樣的操作啊。。。

      13.Re:hibernate怎么進(jìn)行多表查詢??? [Re: worldcreatxr] Copy to clipboard
      Posted by: Jove
      Posted on: 2004-03-18 13:45

      這是HQL,如假包換,童叟無欺

      14.Re:hibernate怎么進(jìn)行多表查詢??? [Re: Jove] Copy to clipboard
      Posted by: javait
      Posted on: 2004-03-19 11:22

      worldcreatxr兄,

      try {
      002 System.out.println("test..");
      003 List list =
      004 s
      005 .createQuery("select user.id,relation.id from User user,Relationship relation")
      006 .list();
      007 for (Iterator iter = list.iterator(); iter.hasNext() {
      008 Object[] record = (Object[]) iter.next();
      009 System.out.print(record[0] + "---" + record[1]);
      010 }
      011 s.close();
      012 } catch (HibernateException e) {
      013 System.err.println(e.getMessage());
      014 }

      中的s 不就是hibernate session 嗎?hibernate 支持的是HQL。

      謝謝!
      -Javait


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多