两个java bean,省略无关字段。 public class Order implements Serializable   
  {   
        //......
private Integer orderId; //主键
private Integer totalWeight; //自己建的字段
private Set items = new HashSet(0); //Item的集合
  }   
  public class Item implements Serializable   
  {   
        //......
private String id; //主键
private Order order; //Order的引用
        private Integer weight;  //对应数据库weight
  }  我想在通过DAO内findAllOrders方法获得Order集合时,Order内totalWeight的值为items内各元素weight的总和,查询语句该怎么写?现在是:public List findAll() {
log.debug("finding all Deliverynote instances");
try {
String queryString = "from Deliverynote";
List list = getHibernateTemplate().find(queryString);
return list;
} catch (RuntimeException re) {
log.error("find all failed", re);
throw re;
}
}

解决方案 »

  1.   

    若totalWeight 没有对应数据库中的字段,而只是自己自己建立的统计总weight的字段
    则建议做法:
    在Order 中写个如下方法
    public void setTatalWeight(){
       for(int i=0 ;i<items.length;i++){
          Item item = items.get(i);   }
    }
      

  2.   

    若totalWeight 没有对应数据库中的字段,而只是自己自己建立的统计总weight的字段 
    则建议做法: 
    在Order 中写个如下方法 
    public void setTatalWeight(){ 
      for(int i=0 ;i <items.length;i++){ 
          Item item = items.get(i); 
          totalWeight += item.getWeight();
      } 
    }
    建议楼主试试
      

  3.   

    LS方法正确。
    不过你要把Order顺带的Items取出来,如果Set Map成lazy的话:
    FROM Order as o INNER JOIN FETCH o.items  WHERE o.orderId=:orderIdhttp://www.blogjava.net/alwayscy/archive/2007/07/26/132577.html