NullPointer при вызове диспетчера сущностей - PullRequest
0 голосов
/ 26 августа 2018

Я пытаюсь написать какую-нибудь программу, используя Java, Hibernate и Spring.Я вижу NullPointerException, когда я вызываю запрос SQL.Я пробовал, пожалуй, каждый пример кода в интернете, но я не знаю, как это сделать.Как я могу решить это?Это мой пример кода.Вот мой полный код программы: https://github.com/lukasz-chojn/films_database/tree/master/src/main/java/Films

    @Controller
    public class DataFromUserController {
        private FilmDaoImpl filmDaoImpl = new FilmDaoImpl();
        private DirectorDaoImpl directorDaoImpl = new DirectorDaoImpl();
        private Locale locale = Locale.getDefault();
        private Scanner sc = new Scanner(System.in).useLocale(locale);

        public FilmDs collectData() {
            //....

            filmDaoImpl.insert(film);
            directorDaoImpl.insert(director);

            return film;
        }

        private String collectTitle() {
            System.out.print("Podaj tytuł filmu: ");
            String tytul = sc.nextLine();
            List<String> existingEntry = filmDaoImpl.existingTitle();
            if (existingEntry.contains(tytul)) {
                System.out.println("Tytuł jest już w bazie. Podaj inny");
                return collectTitle();
            }
                if (tytul.isEmpty()) {
                    System.out.println("Tytuł nie może być pusty. Podaj go");
                    return collectTitle();
                }
            return tytul;
        }//......
    }

    @Service
    @Transactional
    public class FilmDaoImpl implements FilmDAO {

        @PersistenceContext
        private EntityManager entityManager;

        //......
        @Override
        @SuppressWarnings("unchecked")
        public List<String> existingTitle() {
            List<String> titleInTheDatabase;
    // here is NPE
    return titleInTheDatabase = entityManager.createQuery("SELECT film.tytul FROM FilmDs film").getResultList();
        }

        //....
    }

1 Ответ

0 голосов
/ 26 августа 2018

Вы создаете экземпляры самостоятельно, а не позволяете Spring впрыскивать их для себя, поэтому вы теряете все зависимости, такие как entitymanager и т. Д., Меняете свой DataFromUserController

@Controller
public class DataFromUserController {

@Autowired
private FilmDAO filmDao;

@Autowired
private DirectorDAO directorDao;

.....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...