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

如果在jpa中调用本机查询,则会执行其他查询

丰博
2023-03-14

我有一个实体叫做Test。java有70个字段,其中一些字段还与其他实体相关(通过连接一对多、多对一等关联)。

我需要有一个这种类型的对象,但我不需要所有的字段,只有3个字段,其中一个字段与其他实体有外键关系。

因此,我在执行查询的同时编写了一个本机查询。jpa执行其他查询也会导致花费太多时间来完成。

这是我的实体类:

    public Class Test implements Serializable{

    @Id
    private int id;

    @ManyToOne
    @JoinColumn(name = "STATUSID")
    private xxxxx  xxxxx;


   /// other fields, getters and setters

    }   

这是我的原生查询

  public List<Order> getAllOpenOrders() {

    final String query = "SELECT t.* from T_TEST";

     Query createNativeQuery = em.createNativeQuery(query, Test.class);

    List<Order> resultList = createNativeQuery.getResultList();

    return resultList;
}

我怎样才能得到具有选定字段的订单实体对象,我不需要其他字段意味着我只使用这三个字段来实现我的功能。

如何停止执行其他查询?

非常感谢。

共有1个答案

法烨华
2023-03-14

您可以使用投影只选择您需要的列。您不必为此求助于本机查询。

据我记忆所及(我很久以前就调试过),hibernate在执行本机查询之前进行刷新。这将导致在执行本机查询之前执行所有挂起的查询。在您看到其他一些查询的情况下,可能就是这种情况。

您可以使用投影,这是一种只选择所需列的更简洁的方法。

回答如下:https://stackoverflow.com/a/11626877/564503

 类似资料:
  • 问题内容: 在MySQL以外的任何事物中,它感觉都非常简单。 基本上,我需要根据一个特定术语返回多少结果来切换我正在使用的索引类型以及其他一些条件。 效果: MySQL语句中可能吗? 编辑: 查询A: 查询B: 查询切换的原因是,根据“术语”的流行程度,我得到的结果时间截然不同。 问题答案: 编辑: 我下面说的关于要求存储过程的说法是不正确的。尝试这个: 确实,这是一个case表达式,在存储的pr

  • 问题内容: 我有两个班,并有一个互相一一对应关系。这是它们的注释方式。 如您所见,是关系的所有者,并且是此双向关系的另一端。InvitedTech也与 Now 有关系,当我编写一个简单查询以获取所有排期时,它总共触发三个查询。第一个让我得到结果,但是触发了另外两个查询。 查询所有航班(这是我唯一需要的航班) 通过InvitedTech和Flight之间的联接进行查询 在被邀请的科技公司和酒店之间进

  • 我有现有的学生,临时演员 如何在JPA Hibernate上加入这些表?我当前的代码是 学生实体类 附加实体类: 和地址实体类 这是我的存储库类 但是当我在学生实体中使用OneToOne时,我得到了异常“org.hibernate.LazyInitializationException:未能懒惰地初始化角色集合:com.jpa.belajarjpa.enitities.Student.extras

  • 我需要通过在Hibernate中执行本机查询获得结果集。虽然我使用的是EntityManager,但查询和结果集可能不是实体。 当我尝试下面的代码时,我得到了一个结果。因为我要求的是一个有值的结果。(Hibernate JPA) 结果是:爱丽丝 当我试图从相同的代码中获得多个select out(查询为select name)时,指定来自fresher_test(其中id=1) 这有一种方法,我可

  • 当我按下搜索按钮时,出现以下错误: 发生错误: 异常[EclipseLink-4002](Eclipse持久性服务-2.3.2.v20111125-r10461):org。日食坚持不懈例外。DatabaseException内部异常:java。sql。SQLException:索引处缺少IN或OUT参数::1错误代码:17041调用:从CRM_DAILY_SHEET WHERE to_char(报

  • 当使用jpa本机查询 事务传播是我们正在使用的正确jpa的唯一特性吗? 在我的意见中,我就像使用普通的旧jdbc pluc jpa事务传播 我正在阅读PRO JPA一书,根据我的理解 当我们使用JPA本机查询获取一组标量值时(与我们使用jdbc的方式很相似),实际上没有托管实体和持久性上下文的概念。当我们通过本机查询检索实体时,情况会发生变化。