RT,帮我写一个通过userid查询,返回一个list的东西吧   public List findByProperty(String propertyName, Object value) {
log.debug("finding Order instance with property: " + propertyName
+ ", value: " + value);
try {
String queryString = "from Order as model where model."
+ propertyName + "= ?";
Query queryObject = getSession().createQuery(queryString);
queryObject.setParameter(0, value);
return queryObject.list();
} catch (RuntimeException re) {
log.error("find by property name failed", re);
throw re;
}
}hibernate自动生成的DAO里面有它,但是用了压根查不出来,userid不是主键,求大神帮忙啊,hqlHibernate

解决方案 »

  1.   

    //DAO中,自己手动添加
    public List findByUserid(Object id) {
    return findByProperty("userid", id);
    }应该就能行了。注意下对应的大小写,userid应该和hibernate自动生成的那个名称是一样的,而不是数据库表的列名
      

  2.   

    你那个findByProperty 可以用了?解决了没
      

  3.   

    能用了,我之前是按照数据库表的列名查询的,后来发现得按照hibernate那个配置文件里的名称来。你现在报的错是什么样的?
      

  4.   


    看注释的地方!!!!public List findByProperty(String propertyName, Object value) {
    log.debug("finding Order instance with property: " + propertyName
    + ", value: " + value);
    try {
    String queryString = "from Order as model where model."
    + propertyName + "= ?";
    Query queryObject = getSession().createQuery(queryString);
    //你的userid如果是String  
    //queryObject.setString(0, value);
    //你的userid如果是Long 
    //queryObject.setLong(0, value);
    //其他都类似
    return queryObject.list();
    } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
    }
    }
      

  5.   

    。我现在是完全不报错,但是就是通过findByProperty查出来的时候没有数据,= =。。怎么解决啊
      

  6.   


    看注释的地方!!!!public List findByProperty(String propertyName, Object value) {
    log.debug("finding Order instance with property: " + propertyName
    + ", value: " + value);
    try {
    String queryString = "from Order as model where model."
    + propertyName + "= ?";
    Query queryObject = getSession().createQuery(queryString);
    //你的userid如果是String  
    //queryObject.setString(0, value);
    //你的userid如果是Long 
    //queryObject.setLong(0, value);
    //其他都类似
    return queryObject.list();
    } catch (RuntimeException re) {
    log.error("find by property name failed", re);
    throw re;
    }
    }
    还是不能用= =  不知道怎么了。。哎  疯了,明天就要交了
      

  7.   


    我配置文件就是Order.hbm.xml对吧?我那里面<hibernate-mapping default-lazy="false">
     <class catalog="user" name="dao.Order" table="order">
      <id name="orderid" type="java.lang.String">
       <column length="20" name="orderid"/>
       <generator class="assigned"/>
      </id>
      <property generated="never" lazy="false" name="userid" type="java.lang.String">
       <column length="20" name="userid"/>
      </property>
      <property generated="never" lazy="false" name="productid" type="java.lang.String">
       <column length="20" name="productid"/>
      </property>
      <property generated="never" lazy="false" name="totalprice" type="java.lang.String">
       <column length="20" name="totalprice"/>
      </property>
     </class>
    </hibernate-mapping>   也是userid啊,跟数据库列名是一样的
      

  8.   


    我配置文件就是Order.hbm.xml对吧?我那里面<hibernate-mapping default-lazy="false">
     <class catalog="user" name="dao.Order" table="order">
      <id name="orderid" type="java.lang.String">
       <column length="20" name="orderid"/>
       <generator class="assigned"/>
      </id>
      <property generated="never" lazy="false" name="userid" type="java.lang.String">
       <column length="20" name="userid"/>
      </property>
      <property generated="never" lazy="false" name="productid" type="java.lang.String">
       <column length="20" name="productid"/>
      </property>
      <property generated="never" lazy="false" name="totalprice" type="java.lang.String">
       <column length="20" name="totalprice"/>
      </property>
     </class>
    </hibernate-mapping>   也是userid啊,跟数据库列名是一样的
    对啊 你的userid是String类型  我一般都是这么用 query.setString(0,userid)
      

  9.   


    我配置文件就是Order.hbm.xml对吧?我那里面<hibernate-mapping default-lazy="false">
     <class catalog="user" name="dao.Order" table="order">
      <id name="orderid" type="java.lang.String">
       <column length="20" name="orderid"/>
       <generator class="assigned"/>
      </id>
      <property generated="never" lazy="false" name="userid" type="java.lang.String">
       <column length="20" name="userid"/>
      </property>
      <property generated="never" lazy="false" name="productid" type="java.lang.String">
       <column length="20" name="productid"/>
      </property>
      <property generated="never" lazy="false" name="totalprice" type="java.lang.String">
       <column length="20" name="totalprice"/>
      </property>
     </class>
    </hibernate-mapping>   也是userid啊,跟数据库列名是一样的
    对啊 你的userid是String类型  我一般都是这么用 query.setString(0,userid)
    可是还是不管用= =怎么办哎
      

  10.   

    Quote: 引用 4 楼 q35335010 的回复:

    请问,还有什么办法可以通过userid查出来一个list吗
      

  11.   

    要是既不报错也没结果的话,我就没有什么想法了……
    查查对应的jsp和action,看看是不是参数传递的有问题。尤其是this.XX和this.getXX这种地方
      

  12.   

    你难道就不会打印一下hibernate生成的sql语句吗?把打印出来的sql语句拿到数据库中执行不就可以确认是什么问题了吗?