1 | package com.wediscussmovies.project.repository;
|
---|
2 |
|
---|
3 | import com.wediscussmovies.project.model.Discussion;
|
---|
4 | import com.wediscussmovies.project.model.Movie;
|
---|
5 | import com.wediscussmovies.project.model.Person;
|
---|
6 | import com.wediscussmovies.project.querymodels.DiscussionLikesQM;
|
---|
7 | import org.springframework.data.jpa.repository.JpaRepository;
|
---|
8 | import org.springframework.data.jpa.repository.Query;
|
---|
9 | import org.springframework.data.repository.query.Param;
|
---|
10 | import org.springframework.stereotype.Repository;
|
---|
11 |
|
---|
12 | import javax.transaction.Transactional;
|
---|
13 | import java.util.List;
|
---|
14 |
|
---|
15 | @Repository
|
---|
16 | public interface DiscussionRepository extends JpaRepository<Discussion, Integer> {
|
---|
17 | List<Discussion> findAllByTitleLike(String title);
|
---|
18 | List<Discussion> findAllByMovie(Movie movie);
|
---|
19 | List<Discussion> findAllByPerson (Person person);
|
---|
20 |
|
---|
21 | @Query(value = "select new com.wediscussmovies.project.querymodels.DiscussionLikesQM(d.discussionId, count (dl.user) ) from Discussion d" +
|
---|
22 | " left join DiscussionLikes dl on dl.id.discussionId = d.discussionId" +
|
---|
23 | " where :id = d.discussionId" +
|
---|
24 | " group by d.discussionId")
|
---|
25 | @Transactional
|
---|
26 | DiscussionLikesQM findDiscussionWithLikes(@Param("id") Integer discussionId);
|
---|
27 |
|
---|
28 | @Query(value = "select new com.wediscussmovies.project.querymodels.DiscussionLikesQM (d.discussionId, count(dl.user)) from Discussion d" +
|
---|
29 | " left join DiscussionLikes dl on dl.id.discussionId = d.discussionId" +
|
---|
30 | " group by d.discussionId"+
|
---|
31 | " order by d.discussionId asc")
|
---|
32 | @Transactional
|
---|
33 | List<DiscussionLikesQM
|
---|
34 | > findAllDiscussionsWithLikes();
|
---|
35 | }
|
---|