У меня есть проект "Проект" класса JPA, в котором есть список 'Employee'
а getEmployeeList()
возвращает список Employees
.
public class Project implements Serializable {
@ManyToMany(targetEntity=Employee.class)
private List<Employee> employeeList;
public List<Employee> getEmployeeList() {
return this.employeeList;
}
}
public class Employee implements Serializable {
@Basic
private EmployeeType type;
public EmployeeType getType() {
return this.type;
}
}
public enum EmployeeType implements Serializable{
EDITOR,
AUDITOR,
ADMIN,
INACTIVE
}
У меня есть Сотрудник с типом "Аудитор", и когда я запускаю следующие
for(Employee e: p.getEmployeeList()){
if(e.getType()==EmployeeType.AUDITOR)
found=true;
}
он возвращает true, который должен, но когда я запускаю
(p.getEmployeeList()).stream().anyMatch((e) -> (e.getType()==EmployeeType.AUDITOR))
он возвращает false
Что я делаю не так?
Решение. Измените возвращаемый тип на arraylist
public ArrayList<Employee> getEmployeeList() {
return new ArrayList<>(this.employeeList);
}
Обновите версию EclipseLink, эта ошибка уже исправлена!
Ошибка: https://bugs.eclipse.org/bugs/show_bug.cgi?id=433075
Обновление до версии 2.6.0 или новее: http://mvnrepository.com/artifact/org.eclipse.persistence/eclipselink/2.6.0
p.getEmployeeList().stream().anyMatch(e -> e.getType() == EmployeeType.AUDITOR)
тожеp.getEmployeeList().stream().anyMatch(e -> e.getType() == EmployeeType.AUDITOR)
.