当前位置: 首页 > 知识库问答 >
问题:

如何使用本机SQL在Hibernate中获取只有选定列的表实体列表?

宿文栋
2023-03-14

我正在尝试使用会话执行SQL查询。createSQLQuery()Hibernate方法。

test表有三列:

  • col1
  • col2
  • col3

工作

String sql = "SELECT * FROM test";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Test.class);
List<Test> testEntityList  = query.list();

不工作

String sql = "SELECT col1, col2 FROM test";
SQLQuery query = session.createSQLQuery(sql);
query.addEntity(Test.class);
List<Test> testEntityList  = query.list();

错误:

在此ResultSet中找不到列col3。

我只需要从表中检索几个特定的列,而不是整个表。

我该如何实现这一点?

共有1个答案

郎仰岳
2023-03-14

您可以使用hibernate projections,查看这个答案hibernate Criteria查询来获取特定的列,也可以通过将返回类型更改为

列表

    List<Object[]> testEntityList  = query.list();
    List<Test> res = new ArrayList<Test>(testEntityList.size());

    for (Object[] obj : testEntityList) {
      Test test = new Test();
      test.setCol1(obj[0]);
      test.setCol2(obj[1]);
      res.add(test);
    }

 类似资料:
  • 最近,我在使用标准应用编程接口时遇到了问题。这是我第一次接触它。这是我的办公室实体的一部分。 目标-从特定的办公室实体获取工人实体列表。到目前为止,我已经知道如何通过以下方式实现目标: 它工作得很好,但我认为我太依赖JavaList接口方法而不是CriteriaAPI。我可以通过在Criteria中创建适当的查询来获取WorkerEntity(OfficeEntity中的字段“workers”)列

  • 我使用hibernate进行数据库通信。我有一个类: 现在我想用它的主键来获取这个对象,但是这个对象应该只有特定的列? 我尝试使用标准和投影,它返回一个结果,但它没有映射到我期望的对象(Person Object) 任何想法如何解决这个问题使用Hibernate查询/标准? 谢谢

  • 我试图使用hibernate获取一些特定的列,但此查询总是失败。 此查询总是失败,因此我使用以下查询 如何使用hibernate只获取特定列,而不是获取20个列?

  • 问题内容: 如何使用JavaScript从下拉列表中获取选定的值? 我尝试了下面的方法,但是它们都返回选择的索引而不是值: 问题答案: 如果您有一个如下所示的select元素: 运行此代码: 将成为。如果您真正想要的是,请执行以下操作: 这将成为

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

  • 我有根实体及其单个关联。 当我获取实体时,我需要急切地获取,但只有的3个属性:userId、afstName、lastName。 现在我的标准查询是: 接下来,我执行,我得到了sql语句,它只选择了投影列表中指定的的3个属性。但它不选择根<code>Hostel</code>实体的任何属性。生成的查询为: 此查询不起作用,因为它返回五个空的。五个映射是因为有五个<code>Hostel</code