我有2个表sdr
和operator
。
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
我需要选择此表并将结果插入另一个表 - calls
CALS:
id duration operator_id
0 666 0
1 777 1
2 888 0
我需要选择两个表sdr
和operator
并将结果(在对数据进行一些操作之后)插入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;
}
然后从Cals class
创建SdrOperator.class
或者还有其他解决方案吗?
答案 0 :(得分:2)
有两种方式。
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中的示例和说明。