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