Страницы

Поиск по вопросам

суббота, 22 июня 2019 г.

Помогите написать правильно criteria в 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


Ответ

В этом случае необходимо создать либо вложенный 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()));
Документация

Комментариев нет:

Отправить комментарий