У меня снова проблемы с HQL :(
Мой желаемый SQL такой:
select employee.idemployee as id, employee.age as age,
employee.birthday as birthday, employee.firstName as firstName,
employee.gender as gender, employee.lastName as lastName from employee
employee
inner join employee_skillgroups skillgroup1 on
employee.idemployee=skillgroup1.idemployee
inner join employee_skillgroups skillgroup2 on
employee.idemployee=skillgroup.idemployee
where skillgroup1.idskillgroup = 'Sprachen'
and skillgroup.idskillgroup = 'SoftSkills'
Но я просто не могу заставить HQL сгенерировать мне это ...
«Sprachen» и «SoftSkills» - это две строки, выходящие из строки [], которую я даю методу в качестве параметра. В настоящее время метод выглядит следующим образом:
public List<Employee> findEmployeeWithTwoSkillGroups(final String[] skillGroups) {
return template.find("from Employee e join e.skillGroups as s where s in ?", Arrays.asList(skillGroups).toString
().substring(1, Arrays.asList(skillGroups).toString().length()-1));
}
Я "приводил" массив к списку, выполняю toString()
над ним (поэтому я получаю "[Sprachen, SoftSkills]") и обрезаю первый и последний символ (поэтому я получаю "Sprachen, SoftSkills") .
Я предполагаю, что проблема в том, что HQL генерирует "[...]. Idskillgroup in ('Sprachen, SoftSkills')", как будто он обрабатывает две строки как ОДНУ строку ...
И я просто не могу заставить его работать так, как я хочу: /
Может кто-нибудь помочь мне и дать подсказку, что делать дальше / делать? :-)
Greetz
gilaras
Simmilar вопрос: