首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SQL选择中通过列的本机名称指定该列?

如何在SQL选择中通过列的本机名称指定该列?
EN

Stack Overflow用户
提问于 2019-09-26 11:57:40
回答 2查看 103关注 0票数 0

我正在用Spring4和Hibernate 5.1编写一个应用程序。我需要能够与使用本地表和列名称保存SQL查询的遗留系统进行互操作。我需要能够将选择对象添加到使用原始列名而不是实体字段名的元组查询中。

我尝试使用Hibernate和Projections.sqlProjection(column_name...这在某种程度上起到了作用,但其他问题阻碍了我继续朝着这个方向前进。

代码语言:javascript
运行
复制
@Transactional(propagation = Propagation.MANDATORY)
public List<Object[]> testQuery() {

    Class<?> rootClass = getEntityClassByTable("pm_project");

    List<String> columnList = new ArrayList<>();
    columnList.add("pm_project.pm_project_id");
    columnList.add("pm_project.pm_project_name");
    columnList.add("pm_project.pm_project_title");
    columnList.add("pm_project.parent_id");
    columnList.add("pm_project.pm_project_from_date");

    CriteriaQuery<Tuple> query = criteriaBuilder.createTupleQuery();
    Root<?> root = query.from(rootClass);
    List<Selection> selectionList = new ArrayList<>();

    for (String column : columnList) {
            Selection s = nativeSelection(column);
            selectionList.add(s);
    }
    query.multiselect(selectionList.toArray());

    List<Tuple> resultList = em.createQuery(query).getResultList();
    return resultList;
}

我需要'NativeSelection',它可以生成本机列名的选择,而不是实体属性名。如果它接受任何可以是字段的sql,那就太好了,因为可能会弹出一些JSON_VALUE字段。

原生sql的值是动态的,我没有收到完整的SQL,只有列和表名,以及可能的JSON_VALUE调用。我非常希望不必生成原生sql,因为我希望在查询中利用其他JPA特性。

EN

回答 2

Stack Overflow用户

发布于 2019-09-26 12:47:07

如果使用原生查询,则不需要指定实体属性名称。您所要做的就是将nativeQuery属性的值设置为true,并在注释的value属性中定义原生SQL查询

代码语言:javascript
运行
复制
@Query(
  value = "SELECT * FROM pm_project p WHERE p.pm_project_id= 1", 
  nativeQuery = true)
Collection<Project> findProjectById();
票数 0
EN

Stack Overflow用户

发布于 2019-09-26 13:53:33

您也可以通过简单的JPA在不使用原生查询的情况下执行此操作

代码语言:javascript
运行
复制
List<Project> findAllByProjectId(Integer id);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58109363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档