春季数据JPA JPQL选择子属性上的位置

时间:2018-07-31 04:08:57

标签: java spring-mvc spring-data-jpa jpql

我想选择Mangas,并按Date Realese列出Chapter。

但是该查询不能正确返回日期。

@Query("SELECT m FROM Mangas m JOIN m.chapter c where c.release= '2018-07-30' GROUP BY m.id ORDER BY c.manga.id")
    public List<MangasEntity> buscarTodos();

我有域

Mangas > List<Chapter>

@Entity
public class Mangas {

 //id, name, status, date

 @OneToMany
 private List<Chapters> Chapters;

 //Getter and Setter

@Entity   
public class Chapters {

    //id, release, chapterNumber

 @ManyToOne
 @JsonIgnore
 public Mangas manga;

我的查询未按版本正确返回章节列表。我想要发布2018-07-30的章节。

[
    {
        "id": 12,            
        "name": "ONE PIECE",
        "status": "COMPLETE",
        "date": 2020,            
        "Chapters": [
            {
                "id": 22,
                "release": "2018-07-30",
                "chapterNumber": 777
            },
            {
                "id": 23,
                "release": "2018-07-30",
                "chapterNumber": 253
            },
            {
                "id": 26,
                "release": "2018-07-29",
                "chapterNumber": 777
            }
        ]
    }
]

1 个答案:

答案 0 :(得分:0)

使用JOIN FETCH解决。

@Query("SELECT DISTINCT m FROM Mangas m JOIN FETCH m.chapter c WHERE c.release = '2018-07-30' GROUP BY c.id")

通过发行版的List<Chapters>返回漫画

[
    {
        "id": 12,
        "name": "ONE PIECE",
        "status": "COMPLETO",
        "date": 2020,
        "Chapters": [
            {
                "id": 22,
                "release": "2018-07-30",
                "chapterNumber": 777
            },
            {
                "id": 23,
                "release": "2018-07-30",
                "chapterNumber": 253
            }
        ]
    }
]