例如我有一张桌子Student它包含像这样的列id, name, age我正在通过使用恢复特定列值原生查询像下面这样。
Query query = entityManager.createNativeQuery("SELECT age FROM Student");
List list=query.getResultList();
通过使用上面的查询,我们将获得年龄列表Student桌子
现在我想得到age and name从表。
Query query = entityManager.createNativeQuery("SELECT age,name FROM Student");
List list=query.getResultList();
如果我确实喜欢这样,我的代码执行得很好,但是我如何才能在一个列表中获取姓名并在另一个列表中获取年龄。那么我该怎么做呢?非常感谢
Note我的项目中没有任何实体类或 POJO 类,我使用本机查询从数据库获取表。
你可以通过两种方式来处理它。
-
将结果集中的值解析为单独的列表。由于您没有为其定义实体,因此查询将返回
List<Object[]> list = query.getResultList();
对于返回的每一行,您可以通过年龄和姓名出现的索引来访问它们。即,在上面的示例中,年龄首先被选择,因此您会选择索引 0,名称为索引 1。
for (Object[] obj : list) {
age = obj[0];
name = obj[1];
// ..put them into whatever collection you desire
}
-
使用两个查询。一个选择“年龄”,另一个选择“姓名”。每个都会将相应的值返回到它自己的列表中。
Query query = entityManager.createNativeQuery("SELECT age FROM Student");
List ages=query.getResultList();
query = entityManager.createNativeQuery("SELECT name FROM Student");
List names=query.getResultList();
此方法唯一需要注意的是两个列表之间不存在真正的关系。换句话说,年龄[3]在逻辑上可能与名称[3]不匹配。但是......事实上,最初的问题没有任何关于如何创建两个列表的定义。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)