Я уже много часов пытаюсь сделать это правильно, но я просто не могу найти решение.Внутренний запрос и запрос по дате HQL
У меня есть таблица «Заказы» и таблица «События», где eventId является внешним ключом в Заказе. У меня есть список заказов, которые теперь фильтруются только по событию, но теперь я также хочу, чтобы он отфильтровывался по дате, поэтому я решил изменить запрос.
Я пытаюсь присоединиться к таблице событий, но я не могу заставить его работать. Это запрос:
@Transactional
@SuppressWarnings("unchecked")
public List<Orders> getOrders(Integer id){
// java.util.Date utilDate = new SimpleDateFormat("yyyy-MM-dd").parse(test);
// java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
hql = "FROM Orders o join o.eventId e where o.eventId=" +id ;
query = getCurrentSession().createQuery(hql);
return (List<Orders>) query.list();
}
Ваш закомментированный код показывает, как вы объявили переменную для даты, но я не вижу ничего, что говорит нам, что вы пытались использовать эту дату в запросе, или что произошло, когда вы это пробовали; поэтому немного сложно сказать, что пошло не так. Тем не менее, я могу предположить, что использование параметров запроса является более эффективной практикой, чем объединение фрагментов запроса с значениями переменных, а в случае даты, в частности, существует меньше способов сделать ошибку с использованием параметров. –
Я прокомментировал дату, потому что этот запрос работал раньше, не пытаясь присоединиться к таблице Event. Я сделал это, чтобы проверить, правильно ли я подключаюсь. Работает: hql = "FROM Orders o где o.eventId =" + id; Но это не работает: hql = "FROM Orders o join o.eventId e где o.eventId =" + id; – 1oneSquared
'join o.eventId e' выглядит неправильно для меня. Похоже, вы пытаетесь присоединиться к «Orders» к столбцу в «Orders», а не к другой таблице. – JonK