Я пытаюсь получить данные из базы данных mysql с помощью jpql. Запрос sql (который работает) выглядит так:
select akh.invested, akh.datum, akh.stop_loss, akh.take_profit, t.name, p.preis from aktienhandel akh inner join titel t on akh.titel_id_titel=t.id_titel inner join preis p on akh.datum=p.valid_from inner join titel_preis tp on tp.titel_id_titel=t.id_titel and tp.preis_id_preis=p.id_preis;
Мои java классы для этой операции выглядят так:
@Entity
public class Aktienhandel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idAktienhandel;
private Long units;
private int invested;
private int transaktionskosten;
private Date datum;
private int stop_loss;
private int take_profit;
//foreignkeys
@ManyToOne
private Titel titel;
---------
@Entity
public class Preis {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idPreis;
private double preis;
private Date valid_from;
private Date valid_until;
----------
@Entity
public class Titel {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long idTitel;
private String name;
private int valor;
private String symbol;
private String currency;
@OneToMany(cascade = CascadeType.ALL)
private List<Preis> preis;
Я пытался создать этот JPQL -Запрос в моем репозитории, но мне не удалось сравнить последние значения (inner join titel_preis tp on tp.titel_id_titel=t.id_titel and tp.preis_id_preis=p.id_preis)
Я попытался присоединиться к List<Preis> preis
из Titel
, но это не сработало, как ожидалось:
@Query("SELECT akh from Aktienhandel akh INNER JOIN Titel t on akh.titel=t.idTitel INNER JOIN Preis p on akh.datum=p.valid_from INNER JOIN t.preis tp ON tp.idPreis=p.idPreis")
List<Aktienhandel> getDetailsfromAktienhandel();