调用实体管理器时的空指针

我尝试使用 Java、Hibernate 和 Spring 编写一些程序。我在调用 SQL 查询时看到 NullPointerException。我可能尝试了互联网上的所有代码示例,但我不知道该怎么做。我该如何解决?这是我的示例代码。有我的完整程序代码: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();

        }


        //....

    }


翻过高山走不出你
浏览 180回答 1
1回答

慕丝7291255

您正在自己创建实例,而不是让 spring 为您注入它,这就是为什么您会丢失所有依赖项(如实体管理器等)的原因。更改您的 DataFromUserController@Controllerpublic class DataFromUserController {@Autowiredprivate FilmDAO filmDao;@Autowiredprivate DirectorDAO directorDao;.....}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java