Отношения ManyToMany с одной стороны должны jpq с другой стороны - PullRequest
0 голосов
/ 15 октября 2018

У меня есть модели, т. Е. PaymentRecon и накладная.Один платеж Recon может иметь под собой множество накладных.Но не хочу с этим тесно связывать накладную.Поэтому я создаю модели, как показано ниже:

paymentRecon

@SuppressWarnings("serial")
@Entity
public class PaymentReconciliation extends BaseEntity {
@Column
private String parentId;
@Column
private BigDecimal grossAmount;
@Column
private String currency;
@Column
private Integer totalNumberOfPackages;
@Column
@ManyToMany(fetch = FetchType.LAZY)
@JoinTable(name = "PayReconWaybillMap", joinColumns = { 
@JoinColumn(name = "reconId") }, inverseJoinColumns = {
        @JoinColumn(name = "waybillId") })
private Set<WayBill> waybill = new HashSet<WayBill>();
}

wabill

 @SuppressWarnings("serial")
 @Entity
 public class PaymentReconciliation extends BaseEntity {
 @Column(nullable = false, unique = true)
 private String barCode;
  @Column
  private String consigneeName;
  @Column
  @JsonIgnore
  private String countryCode;

 }

Теперь у меня есть три таблицы.Итак, после разработки все кончено.Мне нужно получить накладные, которые не привязаны к какой-либо paymentRecon.Кто-нибудь может мне помочь, как получить это.

1 Ответ

0 голосов
/ 20 декабря 2018

Вы можете отобразить «таблицу соединений» на новую сущность PayReconWaybillMap, используя @ManyToOne на PaymentReconciliation для ссылки на эту среднюю сущность:

@ManyToOne
private PayReconWaybillMap pwm;

И в PayReconWaybillMapлицо:

@OneToMany
private List<PaymentReconciliation> pr;

@OneToMany
private List<WayBill> wb;

Итак, вы можете использовать JOIN, как это:

SELECT wb FROM WayBill wb 
LEFT JOIN PayReconWaybillMap pwm ON pwm.waybillId = wb.waybillId 
WHERE pwm IS NULL
...