У меня есть два класса в отношениях многие ко многим, но только один из них имеет список для другого.
@Entity
public class Product{
@ManyToMany
List<Category> categories;
//...
}
@Entity
public class Category{
//...
}
Я хочу найти все продукты, относящиеся к категории, с использованием критериев, но следующее не работает.
import static java.util.Collections.singletonList;
List<Product> getProductsByCategory(Category category){
List<Product> results = getCurrentSession()
.createCriteria(Product.class)
.add(Restrictions.in("categories", singletonList(category)))
.list();
if (results == null || results.size() <= 0)
throw new EntityNotFoundException(category + "is empty");
return results;
}
Конечно, было бы действительно просто, если бы был сопоставлен продуктв категорию, но, конечно, Hibernate позволит вам сделать такой запрос без него.
РЕДАКТИРОВАТЬ:
Возвращает ошибку Oracle
Caused by: java.sql.SQLException: Missing IN or OUT parameter at index:: 1
Спасибо за любую помощь!