首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

hibernate组件作为标识符的有关问题

2012-11-01 
hibernate组件作为标识符的问题StringBuffer?queryHSql??new?StringBuffer()???? ??queryHSql.append(?

hibernate组件作为标识符的问题

    1. StringBuffer?queryHSql?=?new?StringBuffer();???? ??
    2. queryHSql.append("?from?YxXqcl?"); ??
    3. List?list?=?session.createQuery(queryHSql.toString()).list();??
    4. for (int i = 0; i < list.size(); i++) {
      ???YxXqcl xqcl = (YxXqcl)list.get(i);
      }
    调用的时候,发现list.size()查到的是正常的,但是跟踪list.get(i)却是null,想不通是哪里的问题。 1 楼 letle 2007-01-17   都没人知道吗?还是问题太弱智 2 楼 抛出异常的爱 2007-01-17   hibernate的意思是冬眠
    他还是冬眠所以list.get(i);
    的结果还没从数据库中出来
    有可能有也可能没有
    的薛定锷量子猫状态
    用system.out.println(list.get(i));
    固化一下就可以从跟踪里看出来了。。。 3 楼 letle 2007-01-17   谢谢,别的没有用过组件做标识符的情况的正常的,为什么用了就取不出来了? 4 楼 ll_2046 2007-01-17   对于你的问题,我建议你参考一下Robbin的帖子:HOL的返回值怎么取得?
    相关内容如下:
    很多人搞不清楚怎么取得HQL的返回值,下面举例说明:

    取单个字段,会返回字段List:


    代码
    Query q = s.createQuery("select c.id from Cat as c");  
    List l = q.list();  
    for (i=0; i< l.size(); i++) {    
      Long id = (Long) l.get(i);   
      System.out.println(id.longValue());  



    取多个字段,Hibernate把每个id和name做成一个2个元素的单维数组,List实际上是一个单维数组的集合。


    代码
    Query q = s.createQuery("select Cat.id, Cat.name, from Cat ");  
    List l = q.list();  
    for (int i=0;  i< l.size(); i++) {  
      Object[] row = (Object[]) l.get(i);  
      Long id = (Long) row[0];  
      String name = (String) row[1];    



    在这种情况下,HQL是不会去构造PO的,这一点很容易验证。JCS是对象Cache,如果写了这样的HQL,JCS里面是空的,说明Hibernate没有构造PO,如果再加上一个对象c本身,JCS里面就有数据了,如下:


    代码
    Query q = s.createQuery("select c.id, c.name,c from Cat as c");  
    List l = q.list();  
    for (int i=0; i< l.size(); ; i++) {  
      Object[] row = (Object[]) l.get(i);  
      Long id = (Long) row[0];  
      String name = (String) row[1];  
      Cat c = (Cat) row[2];    


    感觉跟你的问题很接近,希望能对你有所帮助! 5 楼 letle 2007-01-17   在hibernate上发现一个和我有同样问题的帖子
    http://forum.hibernate.org/viewtopic.php?p=2334315&sid=21f391ca412f0bedd12030e5831557e4

热点排行