【问题标题】:How to know the type of a native SQL query result in Hibernate?如何知道 Hibernate 中原生 SQL 查询结果的类型?
【发布时间】:2015-07-29 14:47:51
【问题描述】:

我在 Hibernate 中有一个原生 SQL 查询。我通过以下方式获得查询结果: List l = query.list()

我知道列表的每个元素对应于结果表的一行。但是这些元素的类型是什么?

Java 告诉我它们的类型是:对象。好的,但我想要更多。因为我想在 Eclipse 控制台中打印结果。但为此,我必须知道类型,我必须知道这个列表究竟包含什么。

这是我在 SL Developer 中获得的查询结果表:

知道,我想在 Eclipse 控制台中打印所有数据

在 Eclipse 中,我使用 Query query = session.createSQlQuery("my query"); List l = query.list();`

有关信息,这里是 SQL 查询代码:

【问题讨论】:

  • 取决于底层表结构。你能告诉我们你如何“打印”结果(因为System.out.println()可以处理Object)?
  • 我通过以下命令打印结果:System.out.println(l.get(0));System.out.println(l.get(1));... 但它会打印一些奇怪的东西:(java.lang.Object;@4b41587d)
  • 事实上我需要知道l.get(0) 是什么。对应结果表的第一行,ok。但是之后 ?如何打印不同列对应的数据?
  • 好的,我会的,谢谢。
  • 我编辑了我的问题。您可以查看链接以查看表结构吗?事实是如何在 Eclipse 控制台中打印数据?我知道每一列的类型,但我不知道l.get(0) 的类型,因为它是一行。所以它是一个对象,但是如何访问该行的 3 列?

标签: java sql hibernate hql


【解决方案1】:

列表中的ObjectObjects 的数组(每列一个)。

您必须迭代(即针对每一行)然后使用列数组:

final List<Object> l = query.list();
for (final Object row : l) {
    final Object[] columns = (Object[]) row;
    // use columns[0],  columns[1] etc
    System.out.println(columns[0]);
}

【讨论】:

    【解决方案2】:

    如果我的问题正确,请尝试getClass().getName() 方法,它会为您提供对象的运行时类。更多信息here

    【讨论】:

      猜你喜欢
      • 2012-07-15
      • 2014-07-15
      • 1970-01-01
      • 2016-10-11
      • 2011-08-28
      • 2011-01-06
      • 1970-01-01
      • 1970-01-01
      • 2021-10-12
      相关资源
      最近更新 更多