gpt4 book ai didi

java - 调用实体管理器时出现空指针

转载 作者:行者123 更新时间:2023-12-02 10:52:45 25 4
gpt4 key购买 nike

我尝试使用 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();
}

//....
}

最佳答案

您自己创建实例,而不是让 spring 为您注入(inject)它,这就是为什么您会丢失所有依赖项(如实体管理器等)的原因。更改您的 DataFromUserController

@Controller
public class DataFromUserController {

@Autowired
private FilmDAO filmDao;

@Autowired
private DirectorDAO directorDao;

.....
}

关于java - 调用实体管理器时出现空指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52029614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com