Как работают пользовательские методы в интерфейсе JpaRepository? - PullRequest
0 голосов
/ 22 апреля 2020

в моих проектах Spring Boot я использую пользовательские методы в репозитории, которые я могу свернуть, используя предложения IntelliJ.

Пример:

@Repository
public interface BookRepository  extends JpaRepository<Book, Integer>
{
    List<Book> getAllByAuthor_IdAuthorAndCategory_IdCategoryOrderByTitleASC(int idAuthor, int idCategory);

}

Где выглядит модель Книги:

@Entity
@Table(name = "book")
public class Book {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id_book")
    private int idBook;

    @Column(name = "title")
    private String title;

    @ManyToOne
    @JoinColumn(name = "id_author", referencedColumnName = "id_author")
    private Author author;

    @ManyToOne
    @JoinColumn(name = "id_category", referencedColumnName = "id_category")
    private Category category;

    public Book() {}

    // Setters and Getters....
}

И он действительно отлично работает без какой-либо конфигурации или дополнительных классов! Это так просто и полезно ... но как это работает? Я не могу найти какую-либо документацию или руководство по этой функции в JpaRepository. Я обнаружил это случайно. Буду признателен за любую информацию. Кто-нибудь?

1 Ответ

1 голос
/ 24 апреля 2020

В SpringDataJpa JPA знает имя таблицы, столбцы и типы данных столбцов, просматривая аннотации, атрибуты и типы данных вашего объекта.

Для пользовательских запросов есть что-то DSL (Domain Specifi c Language), которое помогает Spring Data JPA эффективно работать с JPA.

Для получения дополнительной информации, проверьте это https://stackabuse.com/guide-to-spring-data-jpa/

...