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

如何使用JPA返回两个表之间的联接结果?

徐鑫鹏
2023-03-14

我有 2 张表 sdr运算符

特别提款权:

id duration dialednum description
0   666      1234      text
1   777      5678      text
2   888      1234      text

操作员:

id name   avaya_id description
0  smitt    1234    text
1  bill     5678    text

我需要选择这个表并将结果插入到另一个表-调用

卡尔斯:

id duration operator_id
0   666      0
1   777      1
2   888      0

我需要选择两个表 sdr运算符,并将结果(经过一些数据操作)插入到 cals 表中。

我使用 JPA,但不明白该怎么做。我有一个想法来创建另一个像 SdrOperator 这样的类并编写:

private List<SdrOperator> getAllModelsIterable(int offset, int max) {
        List<SdrOperator> resultList = null;
        try {
            resultList = em.createQuery(" SELECT m.id, m.duration, m.dialednum, m.description, o.id from Cdr m, Operators o WHERE m.codedial = o.avaya_id", SdrOperator.class).setFirstResult(offset).setMaxResults(max).getResultList();
        } catch (Exception e) {
            this.logger.log(Level.SEVERE, null, e);
        }
        return resultList;
    }

然后从 SdrOperator 创建 Cals 类.class或者还有另一种解决方案?

共有1个答案

濮阳振海
2023-03-14

有两种方法。

1)使用@Jointable策略。在这种情况下,您不需要创建关联类(例如Sdr运算符)。参见示例

@Entity
public class Sdr{
   @Id
   @Column(name="ID")
   private long id;

   @ManyToMany
   @JoinTable(name="cals",
          joinColumns={@JoinColumn(name="duration", referencedColumnName="duration")},
          inverseJoinColumns={@JoinColumn(name="operator_id", referencedColumnName="id")})
   private List<Operator> operators;

}

2)像您提到的那样创建一个关联类,比如Sdr运算符,并加入Sdr和运算符类。检查此链接中的示例和解释。

 类似资料:
  • 问题内容: 我开始将DataTables Table插件用于jQuery ,但遇到了一些问题。我从这里使用示例代码。 我有MySQL表女巫看起来像这样: id | 名称| Father_id 是同一表中仅在不同行中的值。因此,如果我想知道父亲的名字,我必须在同一个表中进行搜索。但是DataTable所做的只是按原样显示MySQL表的内容。 在我的数据表中,我想显示如下数据: id | 名称| 父亲

  • 我试图连接4个表,其中一个表没有所有匹配的ID,但我仍然需要显示连接的结果,甚至对于没有相应ID的行。 下面是我所说的一个例子: 示例查询: 所以基本上我要做的是,如果tbl4没有tbl1_id,我仍然希望看到来自table1的结果,但为cnt显示0值...当我运行这个查询时,我得到了一堆重复的条目,数据看起来不正确。

  • 问题内容: 我有两个表和相关的Java映射。 这是我的Java实体。国家POJO: 和用户POJO: 问题是,我怎么能加入到在Hibernate中使用注释?当我使用Hibernate创建User对象时,我需要自动绑定这两个字段(代码和countryCode)。 问题答案: 您需要从映射到实体,并从映射到:

  • 所以我有两个表,并且有一个预期的行增量,但是这个增量不会返回,除非我使用左外连接。有人能帮我理解为什么查询1适用于这个用例,而查询2不适用:

  • 问题内容: 我有两个表: 服务 ID 客户 服务 和 客户 ID 名称 电子邮件 如何列出表服务并将客户表的客户名称汇总在一起?该表中的现场客户服务在客户表上具有该客户的ID, 我感谢您的帮助 问题答案:

  • 问题内容: 我有两个表- 一个包含地址,另一个包含照片。它们之间唯一的共同字段是PersonID。这些被映射到两个POJO类Address和Photo。我可以通过创建条件并在字段中添加限制来获取这些表中的详细信息。我们应该如何在两个表上编写联接。是否有可能将结果作为两个对象获得- 地址和照片。 我想做一个左联接,这样我也可以得到没有照片的人的记录。我读过,只有使用hql才有可能,但是也可以使用条件