当前位置: 首页 > 面试题库 >

在Hibernate createSQlquery结果中使用SQL列名称

邹缪文
2023-03-14
问题内容

我有几个要查询的带有复合主键的sql视图,由于Hibernate使得使用复合键很麻烦,因此我正在使用createSQLQuery。问题在于此方法只能返回一个List,而我需要通过其索引来引用列。

我有什么机会可以做类似jdbc的事情,并通过其sql名称而不是其索引来引用这些列?


问题答案:
Query query=session.createSQLQuery("your query");
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
List<Map<String,Object>> aliasToValueMapList=query.list();

从代码中可以看出,列表包含代表每一行的Map对象。每个Map对象将具有列名作为键,并将值作为值。

注意:这适用于SQLQuery,如果在hql查询上使用AliasToEntityMapResultTransformer而不指定别名,则将获得索引值作为键。

如果再次将aliasToValueMapList转换为POJO列表,建议您创建自己的
ResultTransformer并从“
transformTuple”方法返回自定义对象。



 类似资料:
  • 问题内容: 有没有一种方法可以使用列名而不是Python中的列索引来检索SQL结果列值?我正在将Python 3与mySQL一起使用。我正在寻找的语法非常类似于Java构造: 我的表有很多列,要不断为需要访问的每一列编制索引确实是很痛苦的。此外,索引使我的代码难以阅读。 谢谢! 问题答案: 该MySQLdb的模块具有DictCursor: 像这样使用它(摘自使用Python DB- API编写My

  • 问题内容: 我想读取一个表,该表的值将是sql查询结果的列名。例如,我将table1作为.. 如果看到id = 0,则name的值为ax,name2为bx,name3为cx。将行显示为id,name,name2,name3而不是行。现在,我希望查询结果看起来像这样: 有人可以帮助我实现这一目标吗? 问题答案: 这是通过 数据透视表完成的 。按分组,您为要在列中捕获的每个值发出语句,并使用诸如聚合之

  • 在我的myBatis映射器xml文件中,结果列名为但是结果哈希图有 我想是吧在列名中可能会出现问题。这个问题有什么解决办法吗?

  • 问题内容: 如果我有一个简单的工会 有没有一种方法可以将表名添加到结果中? 所以代替 我会 问题答案: 更好的解决方案是使用,因此服务器将不会检查不同的值

  • 问题内容: 我在Python列表中有一堆列名。现在,我需要将该列表用作语句中的列名称。我怎样才能做到这一点? 到目前为止,我有: 问题答案: 您无法传递要选择作为参数的列列表。它应该是您的SQL表达式的一部分,例如: 要注意的一件事是,SQL中参数值的占位符取决于数据库。如果不起作用,请尝试使用或。有关更多详细信息,请参见https://www.python.org/dev/peps/pep-02

  • 问题内容: 我有一个看起来像这样的表: 我想获得一个二维表,该表为我提供每个站点月份的“ Val”,例如: 但是要注意的是,我不知道“站点”中所有可能的值。如果出现一个新站点,我想在结果表中自动获得一个新列。 我看到的所有可以做到这一点的代码示例都要求我在查询文本中对“ Microsoft and Google”进行硬编码。 我看到了一个没有,但是基本上是通过列出站点并在其中生成带有这些列名称的查