本帖最后由 jis1208 于 2011-11-11 10:49:11 编辑

解决方案 »

  1.   

    SaleBean hbm配置文件,多对一单项关联<?xml version="1.0" encoding="utf-8"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
    <!-- 
        Mapping file autogenerated by MyEclipse Persistence Tools
    -->
    <hibernate-mapping package="com.jsh.model" >
        <class name="SaleBean" table="saleinfo" lazy="true" dynamic-update="true" dynamic-insert="true">
            <id name="id" type="java.lang.Integer">
                <generator class="native"></generator>
            </id>
            
            <property name="articleid" type="java.lang.String">
                <column name="articleid" length="20" />
            </property>
            <property name="offerprice" type="java.lang.String">
                <column name="offerprice" length="1" />
            </property>
            <property name="regtime" type="java.lang.String">
                <column name="regtime" length="20" />
            </property>
            
            <many-to-one name="user" class="UserBean" column="regby"></many-to-one>
        </class>
    </hibernate-mapping>
      

  2.   

    经过N郁闷的一阵Debug后,更觉得是hibernatebug了。。
    具体情况:
    sf = new Configuration().configure().buildSessionFactory();
    Session session = sf.openSession();

    // PageBean page = null;
    Criteria criteria = session.createCriteria(SaleBean.class);
    criteria.add(Restrictions.le("regtime", "2011-11-11"));
    criteria.add(Restrictions.ge("regtime", "2011-11-01"));

    // int rowCount = ((Long) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    // criteria.setProjection(null);

    List<SaleBean> list = criteria.list();
    for(SaleBean s : list){
    System.out.println(s.getId());
    System.out.println(s.getUser().getName());
    }
    }
    加上  这两句
    // int rowCount = ((Long) criteria.setProjection(Projections.rowCount()).uniqueResult()).intValue();
    // criteria.setProjection(null);
    查询总行数以后
    criteria.list()装载的对象由SaleBean 变成object【】 SaleBean UserBean。欢迎大家测一下,继续讨论
    前提 查询的对象有关联关系 如 多对一!
      

  3.   

    java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.jsh.model.SaleBean
    说明你list里面保存的不是SaleBean对象,而是Object[],直接用list,别用泛型的List<SaleBean>接收数据,或者用List<Object[]>。
      

  4.   

    你说的没错,但问题是为什么我加上查rowCount以后,把我List装载的对象给变了!!
    总结:认为是hibernate BUG! 同意的支持下!
      

  5.   

    我也遇到同样的问题。调试了很久找不错误的地方。Object里的对象通过调试,能看得见,是你所要的,当没有给你构建正确的对象。求解?求解?求解?求解?求解?求解?求解?
      

  6.   

    //典型园区
    DetachedCriteria CompanyUserInfoC1 = DetachedCriteria
    .forClass(CompanyUserInfo.class);
    CompanyUserInfoC1.addOrder(Order.desc("uid"));
    CompanyUserInfoC1.add(Expression.eq("type", "1"));
    CompanyUserInfoC1.add(Expression.eq("premeditation1", "1"));
    CompanyUserInfoC1.add(Expression.eq("premeditation2", "0"));
    CompanyUserInfoC1.add(Expression.eq("premeditation3", "1"));
    request.setAttribute("dianxingyuanqu", this.companyUserInfoService.findByPage(CompanyUserInfoC1, 0, 5));
    //-----------------------------------------
    // 精品综合园区
    DetachedCriteria jinpin = DetachedCriteria.forClass(CompanyUserInfo.class);
    DetachedCriteria jinpinzonghetype = DetachedCriteria.forClass(CompanyTypeInfo.class);
    jinpinzonghetype.add(Expression.eq("companyTypeName", "综合园区"));
    // jinpin.addOrder(Order.desc("premeditation3"));
    jinpin.addOrder(Order.desc("uid"));

    jinpin.add(Expression.eq("type", "1"));
    jinpin.add(Expression.eq("companyTypeInfo",this.companyTypeInfoService.ListDeptInfor(jinpinzonghetype).get(0)));
    jinpin.add(Expression.eq("premeditation1", "1"));
    jinpin.add(Expression.eq("premeditation2", "0"));
    jinpin.add(Expression.eq("premeditation3", "2"));
    request.setAttribute("zhongheyuanqu", this.companyUserInfoService.findByPage(jinpin, 0,8));