Hibernate,HQL (NativeQuery) 中的 SQL
Hibernate, SQL in HQL (NativeQuery)
我开始学习 Hibernate。我正处于在 HQL 中试用 SQL 的位置。
我看到了一个我想重新创建的代码示例,但我的输出最终有所不同。
要在 HQL 中使用 SQL,那个人说,如果你只想使用几个列,你需要使用 Map 来获取某些列(所以我不能在这里简单地使用 addEntity)。
我的学生 table 获得了 sId、sName、sMarks。现在我只想检索学生姓名 (sName) 和他们的分数 (sMarks)。
问题是,我只得到 "null" 作为名称和标记的值,而对象向我显示正确的值:
控制台输出:
休眠:SELECT sName,sMarks FROM student
{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("...")) 得到 null?
提前致谢!
其实你已经回答了你的问题
{SNAME=Nameless fool number 1, SMARKS=65}
。 Hibernate 将列名转换为大写。
我开始学习 Hibernate。我正处于在 HQL 中试用 SQL 的位置。 我看到了一个我想重新创建的代码示例,但我的输出最终有所不同。 要在 HQL 中使用 SQL,那个人说,如果你只想使用几个列,你需要使用 Map 来获取某些列(所以我不能在这里简单地使用 addEntity)。 我的学生 table 获得了 sId、sName、sMarks。现在我只想检索学生姓名 (sName) 和他们的分数 (sMarks)。 问题是,我只得到 "null" 作为名称和标记的值,而对象向我显示正确的值:
控制台输出:
休眠:SELECT sName,sMarks FROM student
{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("...")) 得到 null? 提前致谢!
其实你已经回答了你的问题
{SNAME=Nameless fool number 1, SMARKS=65}
。 Hibernate 将列名转换为大写。