如何使用本机SQL在Hibernate中只选择列中的表实体列表?

时间:2016-09-07 15:52:51

标签: postgresql hibernate

我正在尝试使用Hibernate的SELECT * REPLACE( ARRAY( SELECT EXTRACT(DATE FROM curr_dt) FROM t.curr_dt ) AS curr_dt) FROM test.date_table t 方法执行SQL查询。

session.createSQLQuery()表有3列:

  • COL1
  • col2
  • COL3

工作

test

不工作

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

错误:

  

在此ResultSet中找不到列col3。

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

您可以使用休眠投影,请参阅此答案Hibernate Criteria Query to get specific columns,或者您可以通过将返回类型更改为

来执行此操作

List<Object[]>并将其解析为List<Test>

    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);
    }