Страницы

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

четверг, 9 апреля 2020 г.

Помогите написать правильно criteria в Hibernate

#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())); Документация

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

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