Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/347.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java EJB方法返回不同的HashMap?_Java_Jpa_Hashmap - Fatal编程技术网

Java EJB方法返回不同的HashMap?

Java EJB方法返回不同的HashMap?,java,jpa,hashmap,Java,Jpa,Hashmap,我正在开发一个应用程序,人们可以在其中插入和管理与参与者的旅行。我正在使用JPA,并且有一个包含参与实体列表的Trip实体。现在,我没有将名称映射到DB上的Participations表上,但是有一个员工实体来映射,并且参与实体包含员工ID 我编写了一个EJB TripBean实现,该实现有一个方法,该方法获取一个Trip作为参数,并返回一个包含员工ID及其姓名的对的映射: public Map<Integer, String> getEmployeeNames(Trip trip)

我正在开发一个应用程序,人们可以在其中插入和管理与参与者的旅行。我正在使用JPA,并且有一个包含参与实体列表的Trip实体。现在,我没有将名称映射到DB上的Participations表上,但是有一个员工实体来映射,并且参与实体包含员工ID

我编写了一个EJB TripBean实现,该实现有一个方法,该方法获取一个Trip作为参数,并返回一个包含员工ID及其姓名的对的映射:

public Map<Integer, String> getEmployeeNames(Trip trip) {
    Map<Integer, String> employeeNames = new HashMap<Integer, String>();
    for (Participation participation : trip
            .getParticipations()) {
        Employee employee = jpaBean
                .getEmployeeByID(participation.getEmployeeId());
        employeeNames.put(new Integer(employee.getEmployeeId()
                .intValue()),
                employee.getName());
    }
    return employeeNames;
}
公共地图getEmployeeNames(行程){
Map employeeNames=new HashMap();
用于(参与:旅行)
.getParticipations()){
Employee=jpaBean
.getEmployeeByID(participation.getEmployeeId());
put(新整数(employee.getEmployeeId())
.intValue()),
employee.getName());
}
返回员工姓名;
}
现在,在Manager方法中,我使用此hashmap在参与中设置临时字段字符串employeeName(这在另一个类中,而不是在同一个EJB中):

Map employeeNames=tripBean
.getEmployeeNames(trip);
for(参与:trip.getParticipations()){
字符串employeeName=employeeNames.get(participation.getEmployeeId());
参与。setEmployeeName(employeeName);
}
我的问题是,当我从tripBean.getEmployeeNames()获取映射时,它与我在getEmployeeNames方法中看到的映射不同:它包含的条目较少,并且它们与我看到的方法组合的条目不一致。 我肯定我搞砸了一些最佳实践,有人能帮忙吗

其他信息: -我作为唯一登录的用户在本地计算机上调试了该错误,因此我认为它不依赖于其他用户同时访问相同的类。 -我在不同于员工的持久性上下文中定义了旅行和参与。因此,我无法在它们之间创建JPA关系,也无法在postConstruct方法中的参与中设置employeeName字段


谢谢

好的,我发现了问题所在:参与的employeeId的类型是BigDecimal而不是Integer,因此get()方法没有找到任何东西。这就解决了问题:

String employeeName = employeeNames.get(participation.getEmployeeId().intValue());
我仍然不知道为什么在debug中看到的hashmap与我在EJB方法中放在一起的hashmap不同,但在这一点上,我想这只是调试器以不同的方式呈现数据:/

String employeeName = employeeNames.get(participation.getEmployeeId().intValue());