【问题标题】:JPA createQuery()JPA 创建查询()
【发布时间】:2017-11-25 02:59:22
【问题描述】:

在使用 JPA createQuery() 时,我发现我们可以同时使用类名和实体名来获取数据库数据。

这是按类名

em.createQuery("来自 com.model.Stuff s", Stuff.class).getResultList();

这是来自实体名称

em.createQuery("来自 Stuff s", Stuff.class).getResultList();

这是在 orm.xml 中

<entity class="com.model.Stuff" name="Stuff">

无论我使用哪一个,JPA 都可以从 orm.xml 或从我放在类中的注解中获取我正在使用的特定类。

  1. 那么为什么我必须将 Stuff.class 放入参数中?

  2. 因为 createQuery() 中最多只能放两个参数,如果我必须选择两个 Class 进行连接怎么办?

    我不能这样做

    em.createQuery("来自 Stuff s, Thing t where s.id = t.stuff_id", Stuff.class, Thing.class).getResultList();

  3. em.createQuery("来自 Stuff s", Stuff.class).getResultList();

    等于

    em.createQuery("从 Stuff s 中选择 s", Stuff.class).getResultList();

谢谢你给我一些帮助。

【问题讨论】:

    标签: jpa


    【解决方案1】:
    1. Stuff.class 进入参数以确定查询结果对象的类型。一个查询可以有几十个嵌套类型无限复杂,但它最终必须返回一种类型的对象。

    2. 然后您必须创建第三个 Java 类型,它将作为连接的结果。想一想,join后的结果应该是什么类型?

    3. 据我所知,是的

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 2019-06-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-20
      • 2016-02-15
      • 1970-01-01
      • 2018-10-27
      • 2016-08-23
      相关资源
      最近更新 更多