【问题标题】:Null pointer exception in One To Many Mapping example一对多映射示例中的空指针异常
【发布时间】:2014-07-06 15:13:07
【问题描述】:

员工类:

公共类员工{

private int EMPLOYEE_ID;

private int FACULTY_NO;

private int ENROLMENT_NO;

private String FIRSTNAME;

private String LASTNAME;

private Date BIRTH_DATE;

private String CELLPHONE;

private Department DEP;

//getters and setters

}

部门类:

公开课部{

private Long DEPARTMENT_ID;

private String DEPARTMENT_NAME;

private String DEPARTMENT_LOCATION;

private String DEPARTMENT_RANK;

Set<Employee> EMPLOYEE_LIST;

    // getters and setters

}

IMPl 类:

公共类 OneToManyImpl {

public static void main(String[] args) {

    SessionFactory sessionFactory = HibernateUtility.getSessionFactory();

    Session session = sessionFactory.openSession();

    session.beginTransaction();

    Department department = new Department();

    department.setDEPARTMENT_NAME("Mechanical Dept.");

    department.setDEPARTMENT_RANK("A class");

    department.setDEPARTMENT_LOCATION("University");
    session.save(department);


    Employee EMP = new Employee();
    EMP.setENROLMENT_NO(2007255);
    EMP.setENROLMENT_NO(3794);
    EMP.setFIRSTNAME("FirstName");
    EMP.setLASTNAME("Gernaline");
    EMP.setBIRTH_DATE(new Date());
    EMP.setCELLPHONE("011899954");
    EMP.setDEP(department);

    department.getEMPLOYEE_LIST().add(EMP);

        session.save(EMP);

        session.getTransaction().commit();

        session.close();

}

}

即使在添加整个 Set 之后,我在这一行得到空指针异常:department.getEMPLOYEE_LIST().add(EMP); 我哪里错了?

【问题讨论】:

  • EMPLOYEE_LIST 是否已初始化?为什么这个变量要大写?
  • @Reimeus 所以,`TATA CONSULTANCY SERVICES,(该特定银行领域的专家)使用大写字母。有趣!!!
  • 谢谢你的回答。 department.setEMPLOYEE_LIST(new HashSet()); // 你可以添加这一行 department.getEMPLOYEE_LIST().add(EMP);这解决了我的问题。你还能从这个世界上经验丰富的人那里得到什么?

标签: java hibernate


【解决方案1】:

在你的部门类中,你还没有初始化集合,你也没有在坚持之前完成它。

所以Set&lt;Employee&gt; EMPLOYEE_LIST = new HashSet&lt;Employee&gt;();在部门班。

或在持久化部门对象之前执行以下操作

department.setEMPLOYEE_LIST(new HashSet<>());
department.getEMPLOYEE_LIST().add(EMP);

【讨论】:

  • @KaribasappaGC,您为什么要从另一个答案中复制代码以发布为您自己的答案?至少你可以做到department.setEMPLOYEE_LIST(new HashSet&lt;Employee&gt;());
  • @TheKojuEffect :我没有复制..我已经表达了我的观点..Set EMPLOYEE_LIST = new HashSet();在任何答案中..第二部分我添加了它,它也有其他人的答案..但是java中的每个人都以相同的方式创建hashset并使用add方法将元素添加到集合中..这些是java中的api..我有从 oracle 那里学到了很多 java,所以我从不向任何人复制,而且复制粘贴不会增强我们的知识..如果你这样想,我无法帮助你......
【解决方案2】:

你没有在department中初始化EMPLOYEE_LIST

 department.setEMPLOYEE_LIST(new HashSet<>()); // You can add this line
 department.getEMPLOYEE_LIST().add(EMP);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-27
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多