Я пытаюсь получить данные о доступности сотрудников, создавая запрос. Я использовал аннотацию @ElementCollection для сопоставления навыков и daysAvailable, в котором данные хранятся в другой таблице.
TypedQuery<Employee> query = entityManager.createQuery("select e from Employee e where :day MEMBER OF e.daysAvailable and :list MEMBER OF e.skills ", Employee.class);//
query.setParameter("day", dayOfWeek);
query.setParameter("list", employeeRequestDTO.getSkills());
List<Employee> list = query.getResultList();
Я пытаюсь передать набор в свой запрос. Если в наборе есть только один элемент, то запрос работает, но если больше 1, он не может извлечь. Я попытался использовать e.skills в (: list) вместо : список MEMBER OF e.skills . Но все равно не повезло !!
@Entity
public class Employee {
@Id
@GeneratedValue
private long id;
@Nationalized
private String name;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "skills", joinColumns = @JoinColumn(name = "emp_id"))
@Enumerated(EnumType.STRING)
private Set<EmployeeSkill> skills;
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "days", joinColumns = @JoinColumn(name = "emp_id"))
@Enumerated(EnumType.STRING)
private Set<DayOfWeek> daysAvailable;
// Getters & Setters
Это домен, который я создал и теперь хочу получить всех сотрудников, которые доступны в определенный день и имеют определенные навыки. Я создал запрос для этого, но он показывает ошибку - java. sql .SQLException: операнд должен содержать 2 столбца (ов)
Это сгенерированный запрос -
select * from employee e where ( 'TUESDAY' in ( select d.days_available from days d where e.id=d.emp_id)) and (( 'PETTING','FEEDING' ) in (select s.skills from skills s where e.id=s.emp_id));
Есть предложения?