gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:07:05 24 4
gpt4 key购买 nike

我有 2 个表 sdroperator

特别提款权:

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

运算符(operator):

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

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

卡路里:

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

我需要选择两个表sdroperator并将结果(在对数据进行一些操作之后)插入到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.class 创建 Cals 类 或者还有其他解决方案吗?

最佳答案

有两种方法。

1)使用@JoinTable策略。在这种情况下,您不需要创建关联类(例如SdrOperator)。查看示例

@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)创建一个关联类,如您提到的 SdrOperator 并与 Sdr 和 Operator 类连接。检查此示例和解释 link

关于java - 如何使用JPA返回两个表之间的连接结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34171998/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com