ОЖИДАЕМЫЙ
Один нативный запрос для получения всех питомцев определенного смотрителя с помощью поля Many to Many
.
Я знаю, что могу просто получить список питомцев из Ответственный за сущность, дело в том, что я собираюсь применить и другие фильтры, используя ключевое слово AND
, поэтому мне нужно, чтобы WHERE IN
работал с самого начала.
КРАТКИЙ ОБРАЗЕЦ
public class Caretaker {
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "caretaker_pet",
joinColumns = @JoinColumn(name = "caretaker_id"),
inverseJoinColumns = @JoinColumn(name = "pet_id"))
private List<Pet> pets;
}
public class Pet {
@ManyToMany // skipped for clarity
private List<Caretaker> caretakers;
}
ПРОБЛЕМА
Выдает следующий собственный запрос:
java.sql.SQLException: unknown escape sequence {non-qualified-property-ref}
org.hibernate.exception.GenericJDBCException: could not prepare statement
public List<Pet> getPetsBy(Caretaker caretaker) {
try {
Query query = entityManager.createQuery(
"FROM Pet WHERE :caretaker IN (caretakers)")
.setParameter("caretaker", caretaker);
return query.getResultList();
}
catch (Exception exception) {
exception.printStackTrace();
}
}