JPARepository i zaawansowane zapytania SQL w adnotacji

JPARepository i zaawansowane zapytania SQL w adnotacji
ZA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 174
0

Witajcie,
Mam 2 zależne od siebie tabele reprezentowane przez takie obiekty obiekty:
Session:

Kopiuj
@Entity
@Table(name = "users_sessions")
public class Session {

    @Id
    @GeneratedValue
    @Column(name = "session_id")
    private Integer id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "user_id")
    private User owner;

    @Column(length = 64, nullable = false)
    private String series;

    @OneToMany(fetch = FetchType.EAGER)
    @JoinColumn(name = "session_id")
    private List<SessionHistory> history;

    /* Gettery i settery */

}

SessionHistory:

Kopiuj
@Entity
@Table(name = "sessions_history")
public class SessionHistory {

    @Id
    @GeneratedValue
    @Column(name = "history_id")
    private Integer id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "session_id")
    private Session parent;

    @Column(name = "action")
    private Integer action;

    @Column(length = 64, nullable = false)
    private String token;

    private Date date;

    /* Gettery i settery */

}

Napisałem takie zapytanie do bazy:

Kopiuj
SELECT * FROM users_sessions WHERE user_id = 8 AND session_id IN (SELECT DISTINCT session_id FROM sessions_history WHERE action != 2);

I mam problem z napisaniem go tak żeby działał z JPARepository. Kod który mam i nie działa

Kopiuj
@Query("SELECT s FROM Session s WHERE s.owner = :owner AND s.id IN (SELECT DISTINCT session_id FROM sessions_history WHERE action != :action);")
public List<Session> findSessionsByOwnerAndLastActionNotEquals(@Param("owner") User owner, @Param("action") Integer action);

User to klasa która składa się z id i nazwy użytkownika i hasła

SZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 616
0

Koleś jaki błąd dostajesz ??!!

NoZi
  • Rejestracja: dni
  • Ostatnio: dni
0

Twoja encja w jpqlu ma nazwe SessionsHistory a nie sessions_history

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.