我尝试使用 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(); } //.... }
1 回答
慕丝7291255
TA贡献1859条经验 获得超6个赞
您正在自己创建实例,而不是让 spring 为您注入它,这就是为什么您会丢失所有依赖项(如实体管理器等)的原因。更改您的 DataFromUserController
@Controller
public class DataFromUserController {
@Autowired
private FilmDAO filmDao;
@Autowired
private DirectorDAO directorDao;
.....
}
添加回答
举报
0/150
提交
取消