【发布时间】:2020-10-04 05:25:58
【问题描述】:
我从 Hibernate 开始。我正处于这一点,我在 HQL 中尝试 SQL。 我看到了一个我想重新创建的代码示例,但我的输出最终有所不同。 该人说,要在 HQL 中使用 SQL,如果您只想使用几列,则需要使用 Map 来获取某些列(所以我不能在这里简单地使用 addEntity)。 我的学生表有 sId、sName、sMarks。现在我只想检索学生姓名 (sName) 和他们的分数 (sMarks)。 问题是,我只得到“null”作为名称和标记的值,而对象向我显示了正确的值:
控制台输出:
休眠:从学生中选择 sName、sMarks
{SNAME=1 号无名傻瓜,SMARKS=65}
空:空
代码:
NativeQuery querySQL2 = session.createNativeQuery("SELECT sName,sMarks "
+ "FROM student");
querySQL2.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List students = querySQL2.getResultList();
for (Object o : students)
{
System.out.println(o);
Map m = (Map)o;
System.out.println(m.get("sName") + " : " + m.get("sMarks"));
}
为什么我用 Syso(o) 得到正确的对象,而用 Syso(m.get("...")) 得到空值? 提前谢谢!
【问题讨论】:
标签: sql hibernate hql nativequery