выберите 2 таблицы в Hibernate - PullRequest
0 голосов
/ 21 марта 2020

`@ Entity publi c class Mov ie {

private Long id;
private String title;
private String summary;
private long duration;
private LocalDateTime startDate;
private LocalDateTime endDate;
private Set<Session> sessions = new HashSet<>();


public Movie() {
}


public Movie(Long id, String title, String summary, long duration, LocalDateTime startDate, LocalDateTime endDate) {
    super();
    this.id = id;
    this.title = title;
    this.summary = summary;
    this.duration = duration;
    this.startDate = startDate;
    this.endDate = endDate;
}


public Movie(String title, String summary, long duration, LocalDateTime startDate, LocalDateTime endDate) {
    super();
    this.title = title;
    this.summary = summary;
    this.duration = duration;
    this.startDate = startDate;
    this.endDate = endDate;
}


@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
    return id;
}


public void setId(Long id) {
    this.id = id;
}

@OneToMany(mappedBy="movie")
public Set<Session> getSessions() {
    return sessions;
}


public void setSessions(Set<Session> sessions) {
    this.sessions = sessions;
}


public String getTitle() {
    return title;
}


public void setTitle(String title) {
    this.title = title;
}


public String getSummary() {
    return summary;
}


public void setSummary(String summary) {
    this.summary = summary;
}


public long getDuration() {
    return duration;
}


public void setDuration(long duration) {
    this.duration = duration;
}


public LocalDateTime getStartDate() {
    return startDate;
}


public void setStartDate(LocalDateTime startDate) {
    this.startDate = startDate;
}


public LocalDateTime getEndDate() {
    return endDate;
}


public void setEndDate(LocalDateTime endDate) {
    this.endDate = endDate;
}

}`

@Entity

publi c Сессия класса {

private Long id;
private BigDecimal prize;
private LocalDateTime sessionDate;
private Movie movie;
private MovieCinema movieCinema;

public Session() {
}

public Session(Long id, BigDecimal prize, LocalDateTime sessionDate, Movie movie, MovieCinema movieCinema) {
    super();
    this.id = id;
    this.prize = prize;
    this.sessionDate = sessionDate;
    this.movie = movie;
    this.movieCinema = movieCinema;
}

public Session(BigDecimal prize, LocalDateTime sessionDate, Movie movie, MovieCinema movieCinema) {
    this.prize = prize;
    this.sessionDate = sessionDate;
    this.movie = movie;
    this.movieCinema = movieCinema;
}

public Session(BigDecimal prize, LocalDateTime sessionDate, Movie movie) {

    this.prize = prize;
    this.sessionDate = sessionDate;
    this.movie = movie;
}

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
public Long getId() {
    return id;
}

public void setId(Long id) {
    this.id = id;
}

public BigDecimal getPrize() {
    return prize;
}

public void setPrize(BigDecimal prize) {
    this.prize = prize;
}

public LocalDateTime getSessionDate() {
    return sessionDate;
}

public void setSessionDate(LocalDateTime sessionDate) {
    this.sessionDate = sessionDate;
}

@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "movieId")
public Movie getMovie() {
    return movie;
}

public void setMovie(Movie movie) {
    this.movie = movie;
}

@ManyToOne(optional = false, fetch = FetchType.LAZY)
@JoinColumn(name = "movieCinemaId")
public MovieCinema getMovieCinema() {
    return movieCinema;
}

public void setMovieCinema(MovieCinema movieCinema) {
    this.movieCinema = movieCinema;
}

}

У меня есть 2 таблицы

Таблица A

Id | имя | дата | Set

TableB Id | дата | TableA

Я хочу выбрать все tableA, где TableB.date> = LocalDateTime.now

Я думал выбрать * из TableA, TableB, где TableB.date> =: сейчас

Я хочу список элементов TableA со списком из нескольких элементов TableB

введите описание изображения здесь

введите описание изображения здесь

1 Ответ

0 голосов
/ 22 марта 2020

Я решил, но не используя это, я сделал это `publi c Slice findSessionsByDate (Long movieId, int page, int size) {

    LocalDateTime date = LocalDateTime.now();
    //Esto devuelve la lista de sesiones validas de una pelicula
    String queryString = "SELECT s  from Session s WHERE s.sessionDate >= :date AND s.movie.id = :movieId";

    queryString += " ORDER BY s.sessionDate";

    Query query = entityManager.createQuery(queryString).setFirstResult(page * size).setMaxResults(size + 1);

    if (date != null) {
        query.setParameter("date", date);
    }

    if (movieId != null) {
        query.setParameter("movieId", movieId);
    }


    List<Session> sessions = query.getResultList();

    boolean hasNext = sessions.size() == (size + 1);

    if (hasNext) {
        sessions.remove(sessions.size() - 1);
    }

    return new SliceImpl<>(sessions, PageRequest.of(page, size), hasNext);

}`

Вопрос, который я задавал, я хотел отфильтровать по Фильмы и в списке фильмов я хотел отфильтровать сеансы этих фильмов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...