Применение собственных методов к h2 - PullRequest
0 голосов
/ 02 мая 2019

Я начал изучать Spring и пытаюсь сохранить название, жанр, год и данные об актерах для фильмов в базе данных (h2). Как я могу применить свои собственные методы из моего кода, чтобы получить данные из этой базы данных для печати в консоли с system.out.println()?

У меня есть классы для Movie и Actor с их соответствующими атрибутами, оба помечены @Entity аннотацией. Далее у меня есть интерфейс, который расширяет JpaRepository (я знаю, что есть метод по умолчанию для поиска всех фильмов, но я хочу создать эту функцию с помощью собственного метода):

public interface MovieDaoI extends JpaRepository<Movie, Long> {

    @Query("SELECT m FROM Movie m")
    public List<Movie> list();

}

Кроме того, у меня есть база данных H2, инициализированная 3 фильмами (используя файл свойств в момент запуска), и я могу получить доступ к консоли h2 и создавать запросы SQL с помощью веб-интерфейса. Но я хочу вызвать мой метод list() в другом классе с именем MoviesApplication с помощью метода main, взять возвращаемый List и напечатать его в консоли с простым system.out.println(). Есть ли способ сделать это?

Ответы [ 3 ]

0 голосов
/ 02 мая 2019

@ Сервис // Вам нужно добавить этот @ Сервис
публичный класс Bookservice {

@ Autowired // вам нужно добавить это @Autowired
частный фильм MovieDaoI; DaoI;

публичный список () {
return MovieDaoI .list ();
}

}

0 голосов
/ 03 мая 2019

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

В bean-компонентах, а также SpringBootApplication классах вы можете использовать autowired, чтобы получить созданный прокси-сервер хранилища и просто вызвать метод:

@SpringBootApplication
class MoviesApplication {

    @AutoWired
    MovieDaoI movieDaoI;

    public void someMethod() {
        movieDaoI.list();
    }
}

Но я не думаю, что это хорошая идея. Попробуйте создать Сервис или создать тестовый метод

0 голосов
/ 02 мая 2019

в вашем случае вы используете JPQL вместо SQL-запроса, если вы просто хотите использовать SQL-запрос, вы должны написать так: @Query (value = "SELECT m FROM Movie m", nativeQuery = true)

...