【问题标题】:select 2 table in Hibernate在 Hibernate 中选择 2 个表
【发布时间】:2020-03-21 16:03:04
【问题描述】:

`@Entity 公共类电影{

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

公开课会话{

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;
}

}

我有两张桌子

表A

标识 |姓名 |日期 |设置

表B 身份证 |日期 |表A

我想选择所有 tableA 其中 TableB.date >= LocalDateTime.now

我认为 select * from TableA,TableB where TableB.date >= :now

我想要一个 TableA 元素列表以及 TableB 的几个元素列表

enter image description here

enter image description here

【问题讨论】:

  • 你能告诉我们你的实体模型吗?
  • @jorge.munin 您能否将您的实体发布为代码(而不是图像)。

标签: hibernate


【解决方案1】:

我解决了,但没有使用,我做了这个 `public 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);

}`

我问的问题是我想按电影过滤,在电影列表中我想过滤那些电影的会话

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多