Это выглядит правильно.
В вашем разделе DAO у вас уже есть переменная с именем 'c' - вы можете опубликовать код, где она инициализируется? Это просто для того, чтобы проверить, что вы создаете исходные критерии с помощью Order.class.
Затем следует проверить, можете ли вы получить продукт с этим идентификатором:
Product p = (Product)session.load(Product.class, productId)
Таким образом, вы проверяете правильность идентификатора, и Hibernate может найти этот продукт.
В противном случае нам придется начать смотреть на сгенерированный SQL, как предлагали другие комментаторы.