qq_24913711 2017-12-04 15:08 采纳率: 50%
浏览 3567
已采纳

hibernate中执行hql语句,只查询部分字段得到的结果集也只有那一部分字段的属性

如何在hibernate中执行hql语句,只查询部分字段得到的结果集也只有那一部分字段的属性,我试过select new Game(autoid,name,pinyin,initial,appkey,type) from Game
并且在对应的实体当中也创建了构造方法,DEBUG进去也确实是执行了

    public Game(Integer autoid, String name, String pinyin, String initial,
            String appkey, String type) {

        this.autoid = autoid;
        this.name = name;
        this.pinyin = pinyin;
        this.initial = initial;
        this.appkey = appkey;
        this.type = type;
    }

但是我最后的结果集,还是把其他那一堆的字段全带上了,只不过没赋值而已,怎样才能让他得到的结果集里没有别的乱七八糟的属性,只有我想要的字段的?

  • 写回答

13条回答 默认 最新

  • 浪里渔夫 2017-12-05 01:00
    关注

    类Game里的其他属性是没办法去掉的,因为你New这个Game对象时,那些属性就已经存在了,只不过hibernate根据hql查询的结果对部分属性进行了赋值。
    如果你非要得到只包含部分属性的一个实体对象,你可以创建一个新的类,例如Game2,这个Game2里只包含了你想要的属性,然后让Hibernate映射下这个 Game2。
    当然这样操作是很麻烦的,如果我哪天需要别的属性了,还要改这个类;或者我需要其他部分属性组合的实体的话,还要再创建一个类。所以你最好是用HashMap来解决这种变化的需求。

    另外,你只要包含这些属性的实体对象是干什么用呢?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办