#java #hibernate
Не могу понять как сделать сравнение в hibernate cruteria. Есть такой метод
@Override
public List getPollForUpdate(IncomingSms incommingSMS) {
Criteria criteria = getSession().createCriteria(PollEvent.class);
criteria.add(Restrictions.eq("status", 0));
criteria.add(Restrictions.eq("call.callingnum", incommingSMS.getSourceAddress()));
return criteria.list();
}
Он должен вернуть список объектов. Но ворачивает ошибку. ругается на criteria.add(Restrictions.eq("call.callingnum",
incommingSMS.getSourceAddress()));
В классе PollEvent есть поле call вот оно
@OneToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "CALL_ID", nullable = false)
private Calls call;
а у него есть поле callingnum по которому яи хочу сравнить
@Column(name = "CALLINGNUM", length = 15)
private String callingnum;
Ошибка которую я получаю
could not resolve property: call.callingnum of: polls.entety.PollEvent
Ответы
Ответ 1
В этом случае необходимо создать либо вложенный criteria: Criteria criteria = getSession().createCriteria(PollEvent.class); criteria.add(Restrictions.eq("status", 0)); criteria.createCriteria("call") .add(Restrictions.eq("callingnum", incommingSMS.getSourceAddress())); либо использовать alias: Criteria criteria = getSession().createCriteria(PollEvent.class); criteria.add(Restrictions.eq("status", 0)); criteria.createAlias("call", "c"); criteria.add(Restrictions.eq("c.callingnum", incommingSMS.getSourceAddress())); Документация
Комментариев нет:
Отправить комментарий