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条)

报告相同问题?

悬赏问题

  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)