为什么使用外键获取数据会向我发送错误?

Why is using foreign key to fetch data sending me an error?

我只是尝试使用外键获取数据,虽然它可以正常工作,但我遇到了一个奇怪的错误,我真的不知道为什么,因为我在互联网上找到了类似的代码并且它可以正常工作很好。

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

您在这里看到了两个问题;一个是 the NullPointerException that's making your program crash in the first place,然后泄漏检测器被触发,因为您在 try 块中调用了 session.close()(因此如果有异常,它会被跳过)。

你的lpa可能是null因为没有主键2的记录

(另请注意,您使用的样式已过时;至少,将 JPA 接口 (EntityManager) 与 try-with-resources 一起使用,最好使用 Spring 等托管事务@Transactional.)