【发布时间】:2018-08-28 19:07:18
【问题描述】:
在这个问题中NullPointer when call entity Manager 建议将@Autowire DAO 添加到控制器中。我做到了,它工作正常。然后我在DaoImpl 中添加了@Transactional 注释,除了select 语句之外,每个操作插入/删除/更新都可用。当我调用这个方法时,我看到了 NPE。有人可以帮忙吗?
public List<Object[]> showAll() {
return filmDao.getAllFilms();
}
这是控制器的完整代码:https://pastebin.com/BNi5EH86 选择看起来像:
public List<Object[]> getAllFilms() {
List<Object[]> all;
EntityManager manager = getEntityManager();
return manager.createQuery("SELECT film.id, film.tytul, film.czasTrwania, film.rozmiar, director.imieInazwisko FROM FilmDs film " +
"JOIN DirectorDs director ON film.tytul=director.tytul").getResultList();
}
在屏幕上打印:
public void viewAll() {
for (Object[] film : filmOperationController.showAll()) {
Arrays.asList(film);
System.out.print("Nr. " + film[0]
+ ", Tytuł: " + film[1]
+ ", Reżyser: " + film[4]
+ ", Czas: " + film[2]
+ ", Wielkość pliku: " + film[3]
+ "\n");
}
}
完整的堆栈跟踪:
线程“main”中的异常 java.lang.NullPointerException 在 Films.controller.FilmOperationController.showAll(FilmOperationController.java:50) 在 Films.view.ViewFilm.viewAll(ViewFilm.java:16) 在 Films.Main.showAndSearch(Main.java:40) 在 Films.Main.main(Main.java:23)
【问题讨论】:
-
完整代码中 npe 在第 50 行。是的,我试过了,在这种情况下,filmDao 为空。
-
其中一列是否可能为空。
-
请出示
FilmDAO的相关代码... -
那filmDao是spring组件吗? @Component、@Service、@Repository 注释对类定义也是如此吗?它是组件扫描的吗?您是否在 GitHub/gitlab 上有此代码,以显示更大的上下文?是否有可能其中一列为空是的,每个类都有适当的 anntotaion 每列都有数据。实体有 NotNull
标签: java spring entitymanager