У меня есть следующие классы:
class Person(){
@OneToMany(mappedBy="person")
private List<PersonRoles> roles;
}
class PersonRoles(){
@ManyToOne
@JoinColumn(name = "person_id", nullable = false)
private Person person;
@ManyToOne
@JoinColumn(name = "request_id")
private Request request;
}
class Request(){
@OneToMany(mappedBy="request")
private List<PersonRoles> roles;
}
Теперь я собираюсь выбрать всех людей на основе заданного идентификатора запроса и его ролей, используя hibernate и внутреннее соединение, но мой журнал сообщает мне, что моя таблица не существует. Это мой запрос до сих пор:
sql = "SELECT p.* FROM person AS p INNER JOIN p.roles ON p.roles.personId = p.id
INNER JOIN request AS r ON p.roles.requestId = r.id AND p.roles.role like :item
AND r.id = :id";
query = session.createSQLQuery(sql);
query.addEntity(Person.class);
query.setParameter("item", "Members");
query.setParameter("id", id);
person = (Person) query.uniqueResult();
и вот что я получил в журнале:
Table 'p.roles' doesn't exist
Я забыл какую-нибудь спящую аннотацию? или в моем запросе что-то не так?