Witajcie,
Mam 2 zależne od siebie tabele reprezentowane przez takie obiekty obiekty:
Session:
@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:
@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:
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
@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