Доброе утро, у меня вопрос к этому.У меня есть SQL-запрос, который включает в себя 3 таблицы: кредиты, платежи и счета
выберите c.date, c.pay_number, c.cost из кредитов c присоединиться к платежу p на c.payment_id = p.id объединить счет bна b.id = p.bill_id где b.id =: b.id;
Когда я помещаю этот запрос в dbeaver, он отлично работает, но мне нужна помощь, чтобы перевести на правильное предложение JPA.
Это объект счета:
@Entity
@Data
public class Bill {
@Id
@GeneratedValue
private UUID id;
private long dateCreated;
private boolean active;
private String billSeq;
private String stringSeq;
private String priceType;
private double iva;
private double ice;
private double total;
private double subTotal;
private double baseNoTaxes;
private double baseTaxes;
private String ordenDecompra;
private String srr;
private String lugar;
private String otir;
private double discount;
private int discountPercentage;
private String claveDeAcceso;
private String idSri;
private int typeDocument;
private String quotationSeq;
private String stringQuotationSeq;
@ManyToOne
@JoinColumn(name = "client_id")
private Client client;
@ManyToOne
@JoinColumn(name = "user_id")
private UserIntegridad userIntegridad;
@ManyToOne
@JoinColumn(name = "subsidiary_id")
private Subsidiary subsidiary;
@OneToMany(mappedBy = "bill", cascade = CascadeType.ALL)
private List<Detail> details;
@OneToMany(mappedBy = "bill", cascade = CascadeType.ALL)
private List<Payment> payment;
public void setListsNull(){
details = null;
payment = null;
};
public void setFatherListToNull(){
client.setListsNull();
client.setFatherListToNull();
userIntegridad.setListsNull();
userIntegridad.setFatherListToNull();
subsidiary.setListsNull();
subsidiary.setFatherListToNull();
};
@Transient
public static Bill newBillTest(){
Bill bill = new Bill();
bill.setDetails(new ArrayList<>());
bill.setPagos(new ArrayList<>());
bill.setClient(Client.newClientTest());
bill.setUserIntegridad(UserIntegridad.newUserIntegridadTest());
bill.setSubsidiary(Subsidiary.newSubsidiaryTest());
return bill;
};
}
Это объект платежа:
@Entity
@Data
public class Payment implements Child {
@Id
@GeneratedValue
private UUID id;
private String medio;
private double total;
private String payForm;
private String cardBrand;
private String chequeAccount;
private String chequeBank;
private String chequeNumber;
private String chequeDiasPlazo;
private long fechaCobro;
private int creditoIntervalos;
private int creditoNumeroPagos;
@OneToMany(mappedBy = "payment", cascade = CascadeType.ALL)
private List<Credits> credits;
@ManyToOne
@JoinColumn(name = "bill_id")
private Bill bill;
public void setListsNull(){
credits = null;
}
public void setFatherListToNull(){
bill.setListsNull();
bill.setFatherListToNull();
}
public static Payment newPaymentTest(){
Payment payment = new Payment();
payment.setBill(Bill.newBillTest());
return payment;
}
}
Это объект кредитов:
@Entity
@Data
public class Credits implements Child {
@Id
@GeneratedValue
private UUID id;
private int diasPlazo;
private long fecha;
private int payNumber;
private double valor;
@ManyToOne
@JoinColumn(name = "payment_id")
private Payment payment;
public void setFatherListToNull(){
payment.setListsNull();
payment.setFatherListToNull();
}
public static Credits newCreditsTest(){
Credits credit = new Credits();
credit.setPayment(Payment.newPaymentTest());
return credit;
}
}
ПотокСистема переходит от того, когда счет-фактура генерируется, тип платежа записывается в таблице платежей, если он оплачивается наличными или в кредит, если платеж в кредит, информация хранится в таблице кредитов, поэтому мне нужно извлечь изТаблица кредитует всю информацию, хранящуюся в таблице кредитов, вводя только идентификатор счета.
Итак, в репозитории (CreditsRepository) я сделал это:
@Repository
@Qualifier(value="CreditsRepository")
public interface CreditsRepository extends CrudRepository<Credits, UUID>{
Iterable<Credits> findByPago(Pago pago);
@Query("SELECT c FROM Credits c JOIN c.payment p JOIN p.bill b WHERE b.id = :id")
Iterable<Credits> findCreditsOfBillByBillId(@Param("id") UUID id);
}
Так что мне нужна помощь, чтобысделать хороший @ Query