如何使用 JPA 从表中获取多个列?

新手上路,请多包涵

例如,我有一个 Student 表,它包含像 idnameage 这样的列,我正在使用 NativeQuery 恢复特定的列值,如下所示。

 Query query = entityManager.createNativeQuery("SELECT age FROM Student");
List list=query.getResultList();

通过使用上面的查询,我们将在 学生 表中获取年龄列表现在我想从表中获取 年龄姓名

 Query query = entityManager.createNativeQuery("SELECT age,name FROM Student");
List list=query.getResultList();

如果我这样做我的代码执行得很好,但是我怎样才能在一个列表中获取名字并在另一个列表中获取年龄。那么我该怎么做。非常感谢

请注意,我的项目中没有任何实体类或 POJO 类,我正在使用本机查询从数据库中获取表。

原文由 Prabha 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 430
1 个回答

您可以通过两种方式来处理它。

  1. 将结果集中的值解析为单独的列表。由于您没有为其定义实体,因此查询将返回一个
   List<Object[]> list = query.getResultList();

对于返回的每一行,您可以通过它们出现的索引访问年龄和姓名。即在你上面的例子中首先选择了年龄,所以你会认为它是索引 0,名字是索引 1。

    for (Object[] obj : list) {
        age = obj[0];
        name = obj[1];
        // ..put them into whatever collection you desire
   }

  1. 使用两个查询。一个选择 AGE,另一个选择 NAME。每个都会将相应的值返回到它自己的列表中。
    Query query = entityManager.createNativeQuery("SELECT age FROM Student");
   List ages=query.getResultList();

   query = entityManager.createNativeQuery("SELECT name FROM Student");
   List names=query.getResultList();

对该方法的唯一警告是两个列表之间没有真正的关系。换句话说,ages[3] 在逻辑上可能不匹配 names[3]。但是……实际上,原始问题没有关于如何创建两个列表的任何定义。

原文由 dispake 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题