Запрос данных Spring с вложенными полями (объединяющий другие столбцы) - PullRequest
0 голосов
/ 10 сентября 2018

У меня есть 3 лица Topic, Text и Author.

Topic 1:n Text and Text 1:n Author

Мои объекты выглядят так:

@Entity
public class Topic {
    @Id
    private int id;
    private LocalDate date;
    private String name;
    @JoinColumn(name = "text_id", nullable = false)
    private Text text;
}

@Entity
public class Text {
    @Id
    private int id;
    private LocalDate date;
    private String name;
    private String description;
    @JoinColumn(name = "author_id", nullable = false)
    private Author author;
}

public class Author{
    @Id
    private int id;
    private String name;
    private String description;
}

теперь я пытаюсь создать jpa-запрос данных весны, чтобы получить темы между датами для конкретных авторов.

Решение для просто дат между работами:

List<Topic> findByDateBetween(LocalDate begin, LocalDate end);

Я пробовал что-то вроде:

List<Topic> findByDateBetween_AuthorId(LocalDate begin, LocalDate end, int authorId);
List<Topic> findByDateBetweenAuthorId(LocalDate begin, LocalDate end, int authorId);
List<Topic> findByDateBetweenAuthor_id(LocalDate begin, LocalDate end, int authorId);

Ничего не сработало. Есть предложения?

1 Ответ

0 голосов
/ 10 сентября 2018

В репозитории JPA для темы вы можете написать собственный запрос.

@Query("SELECT t FROM Topic t" +
       "JOIN t.text tx " + 
       "JOIN tx.author a " + 
       "WHERE a.id = :authorId AND t.date >= :begin AND t.date <= :end")
List<Topic> getTopicsInDatesByAuthor(@Param("begin") LocalDate begin, @Param("end") LocalDate end, @Param("authorId") int authorId);
...