有一个表table_user,有列id,user_name,user_password
对于的bean TableUser有id,userName,userPassword属性我想做一个查询只查所有的userName,并且返回一个List<TableUser>
每一行为
id = null
userName = "somgthing here"
userPassword = null或者就返回一个List<Map>
每一行数据为
"userName"="something here"
应该怎么做?hql或者native sql都可以我试了半天了,不是报错就是出来的结果不是key=》value的形式,只是
0 : 'something here'

解决方案 »

  1.   

    你的需求比较独特..
    如果你查的是UserTable对象,id肯定是会出来的.
    你可以只查select TableUser.userName,返回一个List<String>.再手动new个新的对象把username填进去.
      

  2.   

    不能直接返回类似的结果吗?
    如果返回结果有1000条,要做个循环每个都new出来?
    而且如果我要取的不是1个字段,是10个字段,也得这么一个个的自己填进去?
      

  3.   

    select username from TableUser 使用query的查询返回的就是List集合,查询一列返回的类型就是你数据库字段的类型
    循环遍历的时候直接用该类型的变量接收就行啊....
      

  4.   

    如果大于等于两列的话,返回的就是一个object[],是得一个一个的new出来,但是要查询那么多字段的话,还不如直接查询整个实体呢?难道字段很多,怕浪费资源么....
      

  5.   


    是的,而且问题是比如我查询用户列表,我不希望取到密码的
    或者我查的是一个带image或者blob类型字段的,也不希望将这些字段select出来的如果没有好办法,那我就自己一个个的new然后赋值去了,呵呵
      

  6.   

    JPQL 和 HQL 都支持这样的写法:SELECT new xxx.xxx.xxx.xx.User(t.id, t.username) FROM User t;User 类中建一个,以 id 和 username 的构造方法,别忘了再加一个空的构造。这样查出来的就是 User 对象,而不是 Object[] 了。
      

  7.   

    select new()...........上面说的,
    createQuery().addEntity(User.class)好像要加上这个才可以
      

  8.   

    用下面的方法让Hibernate帮你new,同时只选你想要的列:String hql = "select new TableUser(u.userName) from TableUser u";

    List<TableUser> list = session.createQuery(hql).list();
      

  9.   


    这样写好像还是很麻烦因为我同时还想实现动态的select某些字段所以 new User的时候,这个User是不确定的
      

  10.   

    用下面的方法让Hibernate帮你new,同时只选你想要的列:String hql = "select new TableUser(u.userName) from TableUser u";

    List<TableUser> list = session.createQuery(hql).list();
      

  11.   

    做一个实体包括那2列user_name和userName就可以返回一个bean了
      

  12.   

    解决动态瑟select可以试试以下代码:Criteria c = session.createCriteria(TestItem.class);

    ProjectionList  projectionList = Projections.projectionList();

    if(true){
      projectionList.add(Projections.property("name").as("name"));
    }

    c.setProjection(projectionList)
      .setResultTransformer(new AliasToBeanResultTransformer(TestItem.class));
      

  13.   

    SELECT new xxx.xxx.xxx.xx.User(t.id, t.username) FROM User t; 
    然后在User 使用查询列id,username做一个构造函数,不过仅限于hibernate3以上版本