Почему использование внешнего ключа для получения данных отправляет мне ошибку? - PullRequest
0 голосов
/ 02 января 2019

Я просто пытаюсь получить данные, используя внешний ключ, и хотя он работает правильно, я получаю странную ошибку, и я действительно не знаю, почему, так как я нашел подобный код в Интернете, и он работает просто отлично.

try {

        Laptop lpa;
        session.beginTransaction();

        Student myStudent = session.get(Student.class, 2);
        lpa = myStudent.getLaptop(); //error refers to this line of code

        System.out.println(lpa.getVrsta());

        session.getTransaction().commit();

        session.close();

    } finally {
        sf.close();

    }

И это дает мне эту ошибку:

ERROR: 
    Connection leak detected: there are 1 unclosed connections upon shutting down pool jdbc:mysql://....
    Exception in thread "main" java.lang.NullPointerException
    at oto_otm_mtm.Blogic.main

1 Ответ

0 голосов
/ 02 января 2019

Вы видите две проблемы здесь;один из них - NullPointerException, который в первую очередь вызывает сбой вашей программы , а затем срабатывает детектор утечки, потому что вы вызываете session.close() в блоке try (и поэтому, если есть исключение, этопропускается).

Ваш lpa, вероятно, null, потому что нет записи с первичным ключом 2.

(Также обратите внимание, что используемый вами стиль устарел; как минимумиспользуйте интерфейсы JPA (EntityManager) с try-with-resources и предпочтительно используйте управляемые транзакции, такие как Spring @Transactional.)

...