在Hibernate中选择2个表
`@实体 公映{在Hibernate中选择2个表,hibernate,Hibernate,`@实体 公映{ 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
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;
}
公开课{
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;
}
}
我有两张桌子
表
Id |名称|日期|设置
表B
Id |日期|表a
我想选择TableB.date>=LocalDateTime.now的所有tableA
我想从TableA中选择*,TableB其中TableB.date>=:now
我想要一个TableA元素列表和TableB的几个元素列表
我解决了这个问题,但没有使用它,我做了这个`公共片段查找会话ByDate(长电影ID,整版页,整版大小){
LocalDateTime date=LocalDateTime.now();
//这是一个很好的例子
String queryString=“从会话s中选择s,其中s.sessionDate>=:date和s.movie.id=:movieId”;
queryString+=“s.sessionDate的订单”;
Query Query=entityManager.createQuery(queryString).setFirstResult(page*size).setMaxResults(size+1);
如果(日期!=null){
query.setParameter(“日期”,日期);
}
if(movieId!=null){
query.setParameter(“movieId”,movieId);
}
List sessions=query.getResultList();
布尔值hasNext=sessions.size()==(size+1);
如果(下一步){
sessions.remove(sessions.size()-1);
}
返回新的SliceImpl(sessions,PageRequest.of(page,size),hasNext);
}`
我问的问题是我想按电影过滤,在我想过滤电影会话的电影列表中你能给我们展示一下你的实体模型吗?@jorge.munin,你能把你的实体作为代码(而不是图像)发布吗。
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;
}
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);
}`