当前位置: 首页 > 知识库问答 >
问题:

Spring Hibernate获取选定列

洪楚
2023-03-14

我试图使用hibernate获取一些特定的列,但此查询总是失败。

@Override
public Users findByEmail(String emailID) {
    // TODO Auto-generated method stub
    try{

        List<Users> users = new ArrayList<Users>();

        users = this.sessionFactory.getCurrentSession().createQuery("SELECT userID, firstName, lastName, imageURL, password, emailID, enabled FROM Users WHERE emailID = :email_ID")
                .setParameter("email_ID", emailID).list();

        if(users.size() > 0)
            return (Users)users.get(0);
        else
            return null;
    }
    catch(Exception exc)
    {
        log.error(exc.getMessage());
        return null;
    }
}

此查询总是失败,因此我使用以下查询

    @Override
public Users findByEmail(String emailID) {
    // TODO Auto-generated method stub
    try{

        List<Users> users = new ArrayList<Users>();

        users = this.sessionFactory.getCurrentSession().createQuery("FROM Users WHERE emailID = :email_ID")
                .setParameter("email_ID", emailID).list();

        if(users.size() > 0)
            return (Users)users.get(0);
        else
            return null;
    }
    catch(Exception exc)
    {
        log.error(exc.getMessage());
        return null;
    }
}

如何使用hibernate只获取特定列,而不是获取20个列?

共有2个答案

蓟安歌
2023-03-14

每当您选择多列时,查询将返回列表

List<Object[]> rows = this.sessionFactory.getCurrentSession()
                     .createQuery("SELECT userID, firstName, lastName,
                      imageURL, password,emailID, enabled 
                       FROM Users WHERE emailID = :email_ID")
                      .setParameter("email_ID", emailID).list();

现在迭代

(Object[] row: rows) {
    System.out.println(" ------------------- ");
    System.out.println("userid: " + row[0]);
    System.out.println("firstName: " + row[1]);
    User u=new User();
    u.setUserId(row[0]);
    u.setFirstName(row[1]);
    u.setLastName(row[2]);

}

其他行也一样

参考文献

严正诚
2023-03-14

您可以尝试使用结果转换器

List<User> users = session
.createQuery(
"SELECT userID as userID, firstName as firstName FROM Users WHERE emailID = :email_ID")
.setParameter("email_ID", emailID)
.setResultTransformer(new AliasToBeanResultTransformer(User.class)).list();

您需要将投影别名指定为firstName,但可以不使用它。

 类似资料:
  • 我是Spring冬眠的新手,但我已经花了一天时间解决这个问题。我还是搞不清楚根本原因是什么,我该怎么办。所以,如果有人能给我一些建议,提前谢谢你。 这里有一个问题,我只是写一个简单的测试类,但是当我运行时,有一个例外: ??: 上下文初始化期间遇到异常-取消刷新 这里是类的源代码: 这是员工。哈佛商学院。xml 这是应用程序ontext.cfg.xml 还有pom。xml 下面是smiple测试类

  • 我正在尝试获取用户在TextView中选择的文本,我不想使用来允许我的用户复制/粘贴操作

  • 问题内容: 我用数据库搜索的结果修改了,以便稍后使用该选择提出另一个数据库请求。 我想获取该字段的值。我可以使用哪种方法? 我只是以为我也可以向中添加事件,并将其保留在控制器的属性中。那也可以接受吗? 问题答案: 用这样的列表视图说: 从ListView获取选定的元素: 跟踪(监听)列表视图选择中的更改:

  • 问题内容: 是否可以从我的表模型中获取选定的行索引? 我的对象已经知道表模型。不用传递对表的引用,它本身可以使用模型获取选定的索引吗? 问题答案: TableModel仅与数据相关,而ListSelectionModel与当前所选内容相关,因此,不,您无法从TableModel中获取所选行。

  • 问题内容: 我尝试使用输入获得当前选择的文本,但我总是得到一个空字符串: 结果成: 使用angularjs.org作为目标站点的完整可重复测试: 请注意,我实际上看到输入的文本是用COMMAND +“ a”选择的。 我究竟做错了什么? 使用量角器2.5.1,Firefox 41。 问题答案: 不适用于在元素中选择的文本,但不适用于在页面中对元素进行的选择。 您可以使用和这样的: 您可能应该为此创建

  • 我正在制作一个BMR计算器,我的一个面板为用户提供了一个选项,可以改变他们输入身高的方式,从厘米到英尺/英寸。 下面是处理上述面板的代码块。 我的问题是,当我按下kg或cm按钮时,文本字段不会出现,因此我认为我使用的isSelected()有点错误。 下面是一幅关于这种情况的图像。您可以看到,即使选择了脚,也不会显示任何文本字段。我能做些什么来解决这个问题?